MST

星途 面试题库

面试题:C++中抽象类构造函数初始化成员变量的规则

在C++中,定义一个抽象类,该抽象类包含一个整型成员变量和一个常量成员变量。请编写这个抽象类的构造函数,并说明构造函数中初始化这两个成员变量的正确方式以及原因。
49.8万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
class AbstractClass {
private:
    int memberVariable;
    const int constantMemberVariable;
public:
    AbstractClass(int value1, int value2) : memberVariable(value1), constantMemberVariable(value2) {}

    // 纯虚函数使该类成为抽象类
    virtual void pureVirtualFunction() = 0;
};

在构造函数中,初始化memberVariableconstantMemberVariable使用初始化列表的方式。原因如下:

  • 对于普通成员变量memberVariable,使用初始化列表初始化效率更高,因为这样可以避免先默认构造再赋值的过程。
  • 对于常量成员变量constantMemberVariable,必须使用初始化列表进行初始化,因为常量一旦被定义就不能被修改,只能在定义时初始化,而构造函数体中的赋值操作不是初始化,所以常量成员变量只能在初始化列表中初始化。