我有一个 String 类,并且创建了一个字段 char* 名称、默认值、参数化、复制构造函数、析构函数和覆盖运算符 =。我的问题是 char* 的默认构造函数应该是什么样子。下面是我的代码的一部分。我使用 char* 因为数组应该是动态的;
class String {
public:
char* name;
String(){
name = new char[0];
}
String(char* str){
name = new char[strlen(str) + 1];
strcpy(name, str);
}
对于 char*,我的默认构造函数应该是什么样子。
您可以创建一个长度为 1 的空终止数组。另请注意,您应该使用成员初始值设定项列表,如下所示:
//use member iniializer list
String():name( new char[1]())
//------------------------^^---->note these parentheses to null terminate
{
}
//use member initializer list
String(char* str):name(new char[strlen(str) + 1])
{
strcpy(name, str);
}