[問題] destructor的問題

看板C_and_CPP (C/C++)作者 (史不拉雞五)時間16年前 (2010/04/28 21:45), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
我寫了三個class class Base { Base(); ~Base(); } class Class1 : public Base { Class1() ~Class1(); } class Class2 : public Class1 { Class2(); ~Class2(); } 然後宣告一個vector<Class1 *> v; 之後程式會依照需求把Class1或Class2的object push_back進vector Class1 *newObj1 = new Class1(); Class2 *newObj2 = new Class2(); v.push_back(newObj1); v.push_back(newObj2); 最後我用一個迴圈來把使用完的object delete掉 for (size_t i=0; i<v.size(); i++) delete v[i]; 但是奇怪的是newObj2只會執行Class1的解構子 但不會執行Class2的解構子 是因為型別的關係嗎? 但是newObj1卻可以執行到Base的解構子 有什麼辦法可以作到正確執行Class2的解構子呢 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.204.165.253

04/28 21:46, , 1F
virtual ?
04/28 21:46, 1F

04/28 22:14, , 2F
阿.. 耍笨了XD 謝謝回答XD
04/28 22:14, 2F
文章代碼(AID): #1Bs3lsMr (C_and_CPP)
文章代碼(AID): #1Bs3lsMr (C_and_CPP)