原帖由 [bold][underline]中学者[/underline][/bold] 于 2007-12-2 15:46 发表 [url=http://bbs.]
" border="0" />[/url]
对象退化,派生类对象的析构函数只负责它自身成员的清理工作,而派生类对象里的基类部分它不负责,要由基类的析构函数来负责。。
所以调用派生类的析构函数会产生对象退化,退化过程:
从派生类对象---->基类对象....这是最简 ...
不知道楼主是不是要的这个答案
我再对虚析构补充一点。
derive derive_obj;
base *p_base = &derive_obj;
delete p_base;
如果base类没有将析构函数定义为虚函数,那么这里的调用将会异常,因为系统会调用指针指向的静态类型base的析构函数,显然与期望不符合。
如果将base的析构作为虚函数,那么根据多态,这点就解决了,所以总把一个类的析构定义为虚函数是个好习惯。