My question is building on this question: Correct way to inherit from a virtual class with non-virtual parent.
Is my understanding right that in the case which is described in the question, the Three and Two part of new allocated object are leaking because they are not destructed?
Source:
#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;
}