如何为指针成员创建构造函数

How to make a constructor for a pointer member?

本文关键字:创建 构造函数 成员 指针      更新时间:2023-10-16

我正在C++课上做一些指针练习,并且被困在了解决问题上,假设我有这样的课程:

    class foo 
    {
     public:
       foo(char *inputWord = "");  // Default parameter constructor
     private:
        char * word; 
        int wordSize; // length of word
    };

在主要我有:

int main()
{
  foo baz("t");
  foo bar("test");
  return 0;
}

我将如何为此构造函数进行实现?


到目前为止,我知道要初始化wordSize,我可以做:
foo::foo()
{
  wordSize = strlen(inputWord);
}

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

  • strcpy(word,strlen);

  • for(int i =0; i<wordSize;>

  • 整数计数 = 0;而(数

上述方法均无效。我什至尝试使用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类型能够正确管理(取消)分配、长度等。