MST

星途 面试题库

面试题:C++中构造函数初始化列表的基础应用

假设有一个类`MyClass`,包含两个成员变量`int a`和`double b`,请使用构造函数的初始化列表为这两个成员变量赋值,并解释为什么在某些情况下使用初始化列表比在构造函数体内赋值更好。
46.3万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
class MyClass {
private:
    int a;
    double b;
public:
    MyClass(int _a, double _b) : a(_a), b(_b) {}
};

在某些情况下使用初始化列表比在构造函数体内赋值更好,原因如下:

  • 效率更高:对于类类型成员变量,初始化列表直接调用构造函数进行初始化,而在构造函数体内赋值,会先调用默认构造函数初始化,再调用赋值运算符进行赋值,多了一次构造和赋值操作。例如对于std::string等复杂类型,这种效率差异更明显。
  • 适用于常量和引用成员:常量成员和引用成员在定义后就不能被赋值,必须在初始化阶段就设定值,所以只能使用初始化列表来初始化它们。