MST

星途 面试题库

面试题:C++中抽象类构造函数的初始化列表使用

在C++中,定义一个抽象类`Shape`,包含一个`protected`的`double`类型成员变量`area`,请编写该抽象类的构造函数,使用初始化列表对`area`进行初始化,同时解释为什么在抽象类构造函数中使用初始化列表是一种良好的编程习惯。
12.6万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
class Shape {
protected:
    double area;
public:
    Shape(double a) : area(a) {}
};

在抽象类构造函数中使用初始化列表是一种良好的编程习惯,原因如下:

  • 效率更高:对于成员变量是类类型的情况,使用初始化列表直接调用成员变量的构造函数进行初始化,而在构造函数体内赋值,会先调用成员变量的默认构造函数初始化,然后再进行赋值操作,多了一次不必要的构造和赋值开销。
  • 适用于const和引用成员const成员变量和引用成员变量必须在定义时初始化,只能在初始化列表中完成,在构造函数体内无法对它们进行初始化。