如何为指针成员创建构造函数
How to make a constructor for a pointer member?
我正在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
类型能够正确管理(取消)分配、长度等。
相关文章:
- C++-我可以创建另一个类的成员并在构造函数中使用它吗
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 通过构造函数创建的所有对象都具有相同的向量
- 除了构造函数之外,还创建 QLabel
- 通过构造函数创建一些值并尝试添加到文档中使用 rapidjson 不起作用
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- 创建一个没有复制构造函数的类的 std::vector 的 std::vector
- 在没有默认构造函数的情况下创建的派生对象
- 创建类类型的动态分配数组,其中类不得具有默认构造函数
- 用于创建命名构造函数的宏
- 通过零参数构造函数创建的 glm::mat4 应该包含哪些值?
- 在 c++ 中,如果我创建一个接受一个具有默认值的参数的构造函数 - 它会用作默认(空)构造函数吗?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- C++递归地在类构造函数中创建对象
- 在C++中为结构(联合)创建构造函数
- 创建构造函数时没有适当的默认构造函数可用
- 如何为指针成员创建构造函数
- 继承链是否创建构造函数调用链?
- GCC 4.2.x创建构造函数
- 创建构造函数引用全局变量的类的全局实例时,C++ 程序崩溃