我只是想了解它是如何發生的,因爲它是新的C++。將對象初始化爲另一個類的成員
讓我詳細說明我的問題陳述。
class test1 {
public:
test1() {
cout << " test1::constructor called" << endl;
}
~test1() {
cout << " test1::destrcutor called" << endl;
}
};
class test2 {
public:
test2() {
cout << " test2::constructor called" << endl;
}
~test2() {
cout << " test2::destrcutor called" << endl;
}
};
class derived :public test1, public test2 {
test2 t2;
test1 t1;
public:
derived() {
cout << " derived constructor called" << endl;
}
~derived() {
cout << "derived destructor called" << endl;
}
};
int main() {
derived d;
return 0;
}
上述程序的輸出顯示
test1::constructor called
test2::constructor called
test2::constructor called
test1::constructor called
derived constructor called
derived destructor called
test1::destrcutor called
test2::destrcutor called
test2::destrcutor called
test1::destrcutor called
所以在這裏我的問題是,在什麼點它叫做成員變量的構造函數在派生類中,因爲我還沒有把任何初始化爲同。
由於您是C++新手,因此使用繼承和多態性時要注意的一件事是確保您從您派生的類正在使用虛擬析構函數,這將爲您節省大量未來的麻煩!由於派生從test1和test2繼承,所以test1和test2中的兩個析構函數都應該是虛擬的!這可能不是必須的,但將派生析構函數虛擬爲好也是一種好的做法!這有助於保持對象被銷燬的順序,以便類中的指針保持有效,特別是在處理動態或新內存時。 –