以下定義明確嗎?構造函數初始化列表中的循環依賴項
class A;
class B;
// define A, which takes B& in constructor
// define B, which takes A& in constructor
class C
{
A a;
B b;
public:
C() : a(b), b(a) { /* stuff with a and b */ }
}
完整的示例在ideone.com。
只要A
和B
的構造函數對引用沒有做任何操作,它是安全/定義好的嗎?
爲什麼downvote?讓我知道我該如何改進這個問題。 – Claudiu
我不認爲編譯器允許你執行'a(b)',因爲當'a'被初始化時,'b'還沒有被初始化。 – user3528438
@ user3528438:確實如此,ideone示例編譯並運行。但是,這是因爲我很幸運,還是因爲它在標準中有明確的定義? – Claudiu