在您的帮助下,我可以使用构造函数初始化列表解决我在这个最小示例 ( use parameterized constructor in other classes constructor) 中描述的问题。
在我的现实生活中,事情要困难一些。我的构造函数现在看起来像这样:
ClassC::ClassC() : _objectB(_objectA.getInt()) {
_objectA = ClassA();
}
这行得通吗?编译器不会返回任何错误。但是,_objectB
被初始化为 _objectA
的值,它在下面的行中被初始化。那么 _objectA.getInt()
将如何返回有效值?
如果它不起作用,我怎样才能让它起作用?
最佳答案
如果 _objectA
声明如下
class ClassC
{
ClassA _objectA;
ClassB _objectB;
public:
ClassC();
}
它会工作,因为 _objectA
已经初始化(使用默认构造函数),您只需稍后重新为其分配一个新类,这与 _objectB
无关初始化。
但是,正如@πìντα ῥεῖ 建议的那样,最好使用
ClassC::ClassC() : _objectA(), _objectB(_objectA.getInt()) {}
这将初始化 _objectA
,然后将其用于 _objectB
初始化。
关于c++ - 构造函数初始化列表 - 这行得通吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40665920/