分析程序运行结果,找出程序中存在的问题
请能看懂的给我详细讲解下,谢谢!
#include<iostream>
using namespace std;
class X
{
public:
X() {p=new int[2];cout<<"X(). ";}
~X() {delete [] p;cout<<" ~X()."<<endl;}
private:
int *p;
};
class Y:public X
{
public:
Y() {q=new int[1023];cout<<"Y():T:q= "<<q<<".";}
~Y() {delete [] q;cout<<"~Y(). ";}
private:
int* q;
};
int main()
{
for(int i=0;i<8;i++)
{
X* r=new Y;
delete r;
}
return 0;
}
[解决办法]
类Y申请的内存空间没有被释放
建议把构析函数定义为虚函数
[解决办法]
基类的析构函数应该定义成虚函数,以便在多态调用的情况下派生类能够正确的调用自身的析构函数