这个C++程序为什么不调用析构函数~deiver()和~base()

来源:百度知道 编辑:UC知道 时间:2024/06/22 11:44:15
# include <iostream>
using namespace std;
class base
{
public:
base()
{
cout <<" base::val "<<endl;
val = 12345;
print();
}
base(int x)
{
val = x;
cout << " "<<endl;
}
virtual void print()
{
cout << " base:print(), val = "<<val<<endl;
}
base & operator = (int x)
{
val = x;
cout <<" base::operator, val = "<<x<<endl;
return *this;
}
void relase()
{
cout << " base::relase" <<endl;
}
~base()
{
cout << " ~base::val = "<< val <<endl;
}
protected:
int val;
};

class deiver:public base
{
public:
deiver()
{
cout << " deiver::val "<<endl;
}

deiver(int

我的运行结果是:
base::val
base:print(), val = 12345
deiver::print(), val = 98765
base::val
base:print(), val = 12345
deiver::val
base::operator, val = 100
deiver::print(), val = 100
base::relase
deiver::~deiver
~base::val = 98765

哎...先看看书吧,析构函数貌似不需要人为的去调用吧...

没看你代码,析构函数不能重载。在对象销毁的时候自动调用.

加一句 delete dee; 试一试

动态堆的构造和析构 LZ还不懂

delete时调用析构函数