C++何时会在类成员的对象上调用构造函数?

cem*_*ate 4 c++ constructor class

比方说我上课了

class MyClass {
    public:
        AnotherClass myObject;
};
Run Code Online (Sandbox Code Playgroud)

我的问题是我想用它的构造函数的参数初始化myObject,正如我在函数中声明它在堆栈上一样

AnotherClass myObject(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

但我想为构造函数中的类成员执行此操作:

MyClass::MyClass() {
    myObject = ...?
    ...
}
Run Code Online (Sandbox Code Playgroud)

问题正是如此.如果我声明一个具有构造函数的类成员,C++会调用默认构造函数吗?我怎样才能在类定义中声明变量,但在构造函数中初始化它?

谢谢你的回答!

GWW*_*GWW 8

您可以使用初始化列表.

class MyClass {
    public:
        MyClass() : myObject(1,2,3){ }
        AnotherClass myObject;
};
Run Code Online (Sandbox Code Playgroud)


Ben*_*igt 8

使用ctor-initializer.成员在基类之后和构造函数体运行之前初始化.

MyClass::MyClass() : myObject(1,2,3) {
    ...
}
Run Code Online (Sandbox Code Playgroud)