[問題] destructor的問題
我寫了三個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
04/28 21:46, 1F
→
04/28 22:14, , 2F
04/28 22:14, 2F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章