关于虚析构函数
课本上说:
在实现运行是的多态的时候,常把析构函数声明为虚函数,以便它能及时起到在对象消亡之前做一些清理工作的作用.
这句话怎么理解啊!
问题点数:50、回复次数:8Top
1 楼oo(为了名副其实,努力学习oo技术ing)回复于 2005-11-02 13:57:55 得分 15
析构函数声明为虚函数,当基类指针指向的是子类object时,delete基类指针能正确地调用到子类析构函数。
如果析构函数不声明为虚函数,则只调用到基类析构函数。Top
2 楼windking21(想玩玩WOW 真的那么难吗)回复于 2005-11-02 14:02:05 得分 15
虚析构函数的目的在于在使用delete运算符删除一个对象时,能保析构函数被正确地执行。因为设置虚析构函数后,可以采用动态联编方式选择析构函数。
当不说明基类的析构函数为虚函数时,delete隐含着对析构函数的调用 采用虚析构可以避免
Top
3 楼wangbingrex(王冰)回复于 2005-11-02 14:02:14 得分 0
不懂,能否详细点?
====CSDN 小助手 V2.0 2005年10月16日发布====
CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/10/16/504620.aspx
下载:http://szlawbook.com/csdnv2/csdnv2.rar
为神六喝彩,向所有科技工作者致敬!
拒绝日货。Top
4 楼Maxwell(不可知)回复于 2005-11-02 14:21:54 得分 15
class A
{
virtual ~A();
}
class B : public A
{
virtual ~B();
}
A* pA = new B;
delete pA;
如果析构函数不是虚的,那delete pA就不会调用~B了,这通常是错的。Top
5 楼mythma(~a za, a za,fighting!fighting!fighting!fighting!fi)回复于 2005-11-02 14:41:12 得分 5
推荐<<effective C++>>和《more effective c++》Top
6 楼Rino(清风摇影)回复于 2005-11-02 15:19:11 得分 0
不用虚函数,只会析构基类,不会影响到派生类。Top
7 楼corrupt(喜欢 睡在床板下 的思考)回复于 2005-11-02 15:56:43 得分 0
这里 没人能说的清楚~~
推荐<<effective C++>> 有详细说明~~Top
8 楼qiangsir(齐鲁剑侠)回复于 2005-11-30 11:05:12 得分 0
MARKTop




