0
我的問題是建立在這個問題上:Correct way to inherit from a virtual class with non-virtual parent。正確的方式從具有非虛擬父項的虛擬課堂繼承
我的理解是正確的,在問題描述的情況下,新分配對象的三部分和二部分泄漏是因爲它們沒有被破壞?
來源:
#include <iostream>
struct One
{
~One() {
std::cout << "~One()\n";
}
};
struct Two : One
{
virtual ~Two() {
std::cout << "~Two()\n";
}
virtual void test() = 0;
};
struct Three : Two
{
virtual ~Three() {
std::cout << "~Three()\n";
}
virtual void test() {
std::cout << "Three::test()\n";
}
};
int main()
{
Two* two = new Three;
two->test();
One* one = two;
delete one;
}
是的,這是正確的。我只是[回答了類似問題](http://stackoverflow.com/questions/8764353/what-does-has-virtual-method-but-non-virtual-destructor-warning-mean-durin/8764393#8764393)昨天。 – 2012-01-07 11:55:13
請您可以編輯您的問題以包含上下文,以便我們不需要按照鏈接瞭解「兩個」和「三個」是什麼。 – 2012-01-07 11:59:53
@OliCharlesworth完成 – inf 2012-01-07 12:09:26