假设我有一个只有一个虚函数的基类X.
我将它扩展为Y并覆盖该函数。
我没有为X和Y提供显式的析构函数。
在本声明中销毁期间会发生什么。
Y y;
X *x= &y;
return;
.
.
.
X*x = new Y;
delete x;
return;
哪会导致内存泄漏..
答案 0 :(得分:0)
Y y;
X *x = &y;
return;
这里没有什么不好的事情发生。对象y
在其范围的末尾被(完全)销毁。
X*x = new Y;
delete x;
return;
如果你很幸运,这将导致内存泄漏 。行为未定义,意味着可能发生任何不良事件。
每当该类要作为其他类的基类时,通常都应该声明一个虚拟析构函数。