C++:哪个先被调用/初始化?其成员变量的类构造函数或构造函数?

oll*_*llo 5 c++ oop initialization class

这样的事情如何在 Cpp 中初始化,当在我的main, 我做:Testing test

class Testing
{
public:
    Testing();
    void initalize();
    ~Testing();

    void run();

private:
    int x;
    int y;
    int z;

    bool isBugged;

    OtherClass otherClass_;
};
Run Code Online (Sandbox Code Playgroud)

顺序是什么?

Joh*_*ohn 2

首先调用类构造函数,并且可以使用初始值设定项列表来参数化成员构造函数调用,否则在类构造函数入口处使用它们的默认构造函数。

Class() : otherClass_("fred", 42) {
//ctor body
}
Run Code Online (Sandbox Code Playgroud)

会在 的构造函数主体之前调用 的OtherClassOtherClass(char *name, int age)例如)构造函数。Class否则将使用默认构造函数(无参数)。但由于成员在身体中可用,因此它们是在进入身体之前构建的。上面的示例是一个初始值设定项列表,并且是Class的构造函数显式调用成员构造函数的机会,否则此时将解析为默认构造函数调用。

成员构造的顺序是它们在类声明中出现(声明)的顺序。如果这与您在初始化列表中调用构造函数的顺序不同,您的编译器应该警告您。