class A
{
public:
int i;
~A()
{
std::cout << "~A" << std::endl;
}
};
class B: public A
{
public:
int k;
~B()
{
std::cout << "~B" << std::endl;
}
};
int main(int argc, char* argv[])
{
A* p = new B();
delete p;
return 0;
}
上述情况不会导致内存泄漏,尽管基底破坏器不是虚拟的,而且我知道原因。
但是,这是没有定义的行为吗?
说即使基地破坏器是非虚拟的,如果衍生类不指向其他动态数据,就不会有内存泄漏?