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;
}
尽管基本析构函数不是虚拟的,但上述内容不会导致内存泄漏,我知道原因。
但这是未定义的行为吗?
如果派生类不指向其他动态数据,即使基本析构函数是非虚拟的,也不会出现内存泄漏?