MST

星途 面试题库

面试题:C++构造函数初始化列表与继承关系处理

有一个基类`Base`,包含成员变量`int baseVar`。再定义一个派生类`Derived`,包含成员变量`double derivedVar`。请写出`Derived`类的构造函数,使用初始化列表正确初始化`baseVar`和`derivedVar`,并说明在这种继承关系下,初始化列表执行的顺序以及原因。
32.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
class Base {
public:
    int baseVar;
};

class Derived : public Base {
public:
    double derivedVar;
    Derived(int bv, double dv) : baseVar(bv), derivedVar(dv) {}
};
  • 初始化列表执行顺序:先初始化基类的成员变量baseVar,再初始化派生类的成员变量derivedVar
  • 原因:在C++的继承体系中,基类对象是派生类对象的一部分,并且在派生类对象构造之前,基类对象必须先被构造完成。因此,初始化列表按照基类成员变量在前,派生类成员变量在后的顺序进行初始化。