面试题答案
一键面试class MyClass {
private:
int a;
double b;
public:
MyClass(int _a, double _b) : a(_a), b(_b) {}
};
在某些情况下使用初始化列表比在构造函数体内赋值更好,原因如下:
- 效率更高:对于类类型成员变量,初始化列表直接调用构造函数进行初始化,而在构造函数体内赋值,会先调用默认构造函数初始化,再调用赋值运算符进行赋值,多了一次构造和赋值操作。例如对于
std::string
等复杂类型,这种效率差异更明显。 - 适用于常量和引用成员:常量成员和引用成员在定义后就不能被赋值,必须在初始化阶段就设定值,所以只能使用初始化列表来初始化它们。