如何为指针成员创建构造函数? 我正在学习C++课程中的一些指针练习,并且一直在处理问题,比如说我有这样一个类: class foo { public: foo(char *inputWord = ""); // Default parameter constructor private: char * word; int wordSize; // length of word };

如何为指针成员创建构造函数? 我正在学习C++课程中的一些指针练习,并且一直在处理问题,比如说我有这样一个类: class foo { public: foo(char *inputWord = ""); // Default parameter constructor private: char * word; int wordSize; // length of word };,c++,pointers,C++,Pointers,我主要有: int main() { foo baz("t"); foo bar("test"); return 0; } 如何实现此构造函数 到目前为止,我知道要初始化字号,我只需执行以下操作: 但我不明白如何初始化char*字。 我尝试了以下方法: strcpy(单词,strlen) for(int i=0;i

我主要有:

int main()
{
  foo baz("t");
  foo bar("test");
  return 0;
}
如何实现此构造函数

到目前为止,我知道要初始化字号,我只需执行以下操作:

但我不明白如何初始化char*字。 我尝试了以下方法:

  • strcpy(单词,strlen)

  • for(int i=0;i
  • 整数计数=0; while(count
上述方法都不起作用。我甚至试过使用
memcpy()
memmove()
,但我还是被卡住了


以前有没有人处理过这个问题,能给我指出正确的方向

您只需在分配内存后使用strcpy即可:

Foo(char *inputWord) {
  if (inputWord==nullptr) { // manage null pointer
    wordSize=0;
    word=nullptr;
    return;
  }
  wordSize = strlen(inputWord); // store string length
  word = new char[wordSize+1];  // allocate enough memory to store the original C-style string
  strcpy(word,inputWord);       // copy the original into destination
}
这是C风格,但最好在C++中使用
string
s:

class Foo {
  private:
    string word;
  public:
    Foo(const string &input) : word(input) {} // initialize word with inputWord (let C++ string type do all the tricky parts)
};

C++
string
type能够正确管理(de)分配、长度等。

请不要使用字符串指针,而是使用。如果您仍然想使用指针,请考虑
foo::word
在构造函数中指向何处,即无处。最后,文本(常量)字符串
“”“
将为您提供一个指向常量数组的指针,该数组包含一个字符,即字符串终止符
“\0”
。如果希望指针参数为“无字符串”,则应使其指向空指针,即
nullptr
(或可能
0
)。当然,我们也有相应的检查。@JoachimPileborg我不能从代码中删除一个术语。任务是修改我的代码,为了简单起见,我更改了一些变量名,但我不能只更改类型。我不想使用指针,但我需要理解它们。是的,关于
word
你是对的,这就是我的问题,也是为什么我问那些投我反对票的人这个问题。请不要把你的仇恨投射到我身上,我没有做这个课程,或者C++,我只是一个想学习它的初学者。如果我的问题有什么问题,请告诉我,我会将其格式化。我认为作业的目的是让我们了解这一点。讲座中的一个重要话题是更多地了解算法复杂性、big-o和其他使程序高效的东西。我以前从来没有创建过指针,也没有在函数中创建过动态数组,也没有在代码中看到过指针,这让我现在很兴奋。我迫不及待地想回家试试。如果我能让它起作用,我会接受你的回答。而且我一点也不懂C。C++是我的第一个编程语言,我也在努力学习HTML5。感谢您朝着正确的方向轻推!:-)很抱歉耽搁了,但是你的代码确实帮了我的忙。我正在为该类开发访问器和mutator成员函数。后续问题。我收到了4张反对票。你有什么建议,这样我就不会在将来差点被人遗忘?别担心,大部分都是因为读者对“简单”的问题感到厌烦。。。情绪反应。。。如果你要求一些非常复杂的技术细节,那么即使读者一个字都不懂,你也会得到支持。
class Foo {
  private:
    string word;
  public:
    Foo(const string &input) : word(input) {} // initialize word with inputWord (let C++ string type do all the tricky parts)
};