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

时间:2016-05-20 11:59:56

标签: c++ pointers

我正在研究我的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);
}

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

  • 的strcpy(字,strlen的);

  • for(int i = 0; i&lt; wordSize; i ++)    word [i] = inputWord [i];

  • int count = 0; while(count&lt; wordSize + 1) {    inputWord = word;    inputWord ++; }

以上方法均无效。我甚至尝试使用memcpy()memmove(),但我只是陷入困境。

之前是否有人处理此问题并指出我的方向正确?

1 个答案:

答案 0 :(得分:2)

您可以在分配内存后立即使用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

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类型能够正确管理(de)分配,长度等。