在网站上还没有发现这个问题。所以说我有两个类,一个包含对另一个的引用:
class ClassA {};
class ClassB
{
classA & r_classA;
public:
ClassB( ClassA & io_classA ):r_classA( io_classA ){}
};
所以,如果我想创建一个 ClassB 的实例,我必须在构造函数中将一个对 classA 的引用传递给它:
int main()
{
ClassA classA;
ClassB classB ( classA );
return 0;
}
现在假设我创建了一个包含这两个的 ClassC 类:
class ClassC
{
ClassA m_classA;
ClassB m_classB;
public:
ClassC();
}
我的问题是,我可以指望在初始化列表中构造 m_classB 之前创建 m_classA 吗?也就是说,我可以这样做吗:
ClassC::ClassC()
: m_classA()
, m_classB( m_classA )
{}
这个标准符合吗?便携的?我需要采取任何特殊的预防措施吗?我已经在 ClassC 的主体中在 m_classB 之前声明了 m_classA,并且编译器没有抛出任何警告。该程序似乎工作正常。我只是想检查一下我没有指望一些不可靠的行为会导致崩溃或奇怪的错误。