MST

星途 面试题库

面试题:C++对象成员初始化顺序的常规与调整

在C++中,假设有一个类`ClassA`,包含成员变量`int a`、`double b`和自定义类型`ClassB`的对象`objB`(`ClassB`也有自己的成员变量)。请说明默认情况下这些成员的初始化顺序。如果想要调整`a`和`b`的初始化顺序,使其先初始化`b`再初始化`a`,该如何实现?
42.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 默认初始化顺序
    • 首先初始化基类(如果有基类)。
    • 然后按照成员变量在类中声明的顺序进行初始化。在ClassA中,先初始化int a,接着初始化double b,最后初始化ClassB类型的对象objB
  2. 调整ab的初始化顺序: 在ClassA的构造函数初始化列表中,按照想要的顺序初始化ba。例如:
class ClassB {
    // ClassB的成员变量和函数声明
};

class ClassA {
private:
    int a;
    double b;
    ClassB objB;
public:
    ClassA(): b(0.0), a(0), objB() {
        // 构造函数体
    }
};

在上述代码中,通过在构造函数初始化列表中先写b(0.0),再写a(0),实现了先初始化b再初始化a,最后初始化objB