在 C++ 默认构造函数中为 char* 赋什么值?

问题描述 投票:0回答:1

我有一个 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);
        }
        
c++ dynamic-arrays default-constructor
1个回答
0
投票

对于 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);
}
© www.soinside.com 2019 - 2024. All rights reserved.