来自Java,我对下面的代码有困难.在我的理解中,b仅在第3行声明但未实例化.
什么是在A类中创建B实例的教科书方式?
class A {
private:
B b;
public:
A() {
//instantiate b here?
}
};
Run Code Online (Sandbox Code Playgroud)
编辑:如果B没有默认构造函数怎么办?
例如,您可以b在A构造函数的初始化列表中显式初始化
class A {
B b; // private
public:
A : b() {} // the compiler provides the equivalent of this if you don't
};
Run Code Online (Sandbox Code Playgroud)
但是,b无论如何都会自动实例化.如果你需要B使用非默认构造函数构建一个,或者如果B不能默认初始化,则上述内容是有意义的:
class A {
B b; // private
public:
A : b(someParam) {}
};
Run Code Online (Sandbox Code Playgroud)
在构造函数的初始化列表中正确初始化可能是不可能的,在这种情况下,可以在构造函数的主体中完成赋值:
class A {
B b; // private
public:
A {
b = somethingComplicated...; // assigns new value to default constructed B.
}
};
Run Code Online (Sandbox Code Playgroud)