使用 const 字符串时创建默认构造函数

Create a default constructor when using const strings

我有一个 class 看起来像这样:

Person(int pID,
    int zipCode,
    float ySalary,
    const string& fName,
    const string& mName,
    const string& lName)

当我尝试创建默认构造函数时,如下所示:

Person::Person(void){
    zipCode = NULL;
    pID = NULL;
    ySalary = NULL;
    fName = "";
    mName = "";
    lName = "";
}

我收到一条错误消息,提示没有匹配 const std::string = const char[1];

的运算符“=”

您需要使用成员初始化列表来初始化const引用成员变量:

Person::Person(void) :
    zipCode(NULL) ,
    pID(NULL) ,
    ySalary(NULL) ,
    fName("") ,
    mName("") ,
    lName("") { 
}

我建议始终使用成员初始化列表语法,而不是构造函数主体中的赋值。例如,请参见此处:What is the advantage of using initializers for a constructor in C++?

除了前面的答案,您还可以使用 in-class 初始化(自 c++11 起)。

示例:const string & fname = "";