使用 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 = "";
我有一个 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 = "";