只是一個樣本,以顯示你的時候的事情發生
struct B {
B() {
print("struct B/constructor B", 1);
}
};
struct A
{
B& b;
A(B& b) : b(b) {
print("struct A/constructor with B", 1);
};
};
struct C
{
B b;
A a;
C() : b(),a(b) {
print("struct C/constructor C", 1);
};
void dummy()
{
print("dummy",1);
}
};
struct D
{
A a;
B b;
D() : a(b),b() {
print("struct D/constructor D", 1);
};
void dummy()
{
print("dummy",1);
}
};
int main(int argc, char* argv[])
{
D dTest;
dTest.dummy();
C cTest;
cTest.dummy();
}
---輸出
struct A/constructor with B
struct B/constructor B
struct D/constructor D
dummy
struct B/constructor B
struct A/constructor with B
struct C/constructor C
dummy
乾杯,謝謝。 – Cookie
如果你想創建一個無效的例子,請將'A :: b'從引用改爲對象。然後創建一個'D'將涉及一個未初始化對象的無效副本。 –