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

时间:2015-02-01 19:45:27

标签: c++ default-constructor

我有一个看起来像这样的课程:

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]匹配的运算符“=”;

2 个答案:

答案 0 :(得分:5)

您需要使用成员初始值设定项列表来初始化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++?

答案 1 :(得分:0)

除了前面的答案,你可以使用类内初始化(从c ++ 11开始)。

示例:const string& fname ="&#34 ;;