0
在網站中還沒有找到相當的這個問題。所以說,我有兩個班,一個持有其他參考:我可以使用其他類成員初始化初始化列表中的對象嗎?
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_classA正在創建初始化列表構造m_classB過嗎?也就是說,我可以這樣做:
ClassC::ClassC()
: m_classA()
, m_classB(m_classA)
{}
本標準是否符合標準?便攜式?我需要採取任何特殊的預防措施嗎?我已經在ClassC主體中的m_classB之前聲明瞭m_classA,並且編譯器沒有發出任何警告。該程序似乎工作正常。我只想檢查一下,我不指望會導致崩潰或怪異錯誤的不可靠行爲。
在我看來,這是http://stackoverflow.com/questions/1242830/constructor-initialization-list-evaluation-order的重複。 – us2012