我的问题是建立在这个问题上的:正确的方法从具有非虚拟父级的虚拟类继承。
我的理解是否正确,在问题中描述的情况下,新分配对象的三和二部分因为没有被破坏而泄漏?
来源:
#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;
}