析构函数为什么可以是虚函数
为什么析构函数可以为虚函数,而构造函数则不可以呢
析构函数做虚函数有什么好处呢?
[解决办法]
http://community.csdn.net/Expert/topic/5527/5527204.xml?temp=.4950067
[解决办法]
因为vbtl在构造函数调用后才建立,因而构造函数不可能成为虚函数
[解决办法]
学习
[解决办法]
同意ls的ls的说法.
[解决办法]
为什么构造函数不可以为虚函数?
虚函数的主要意义在于被派生类继承从而产生多态. 派生类的构造函数中, 编译器会加入构造基类的代码, 如果基类的构造函数用到参数, 则派生类在其构造函数的初始化列表中必须为基类给出参数, 就是这个原因.
[解决办法]
补充一下
关于析构函数的作用:
在类的继承中,如果有基类指针指向派生类,那么用基类指针delete时,如果不定义成虚函数,派生类中派生的那部分无法析构。
[解决办法]
析构函数定义成虚函数的作用
ljx_cug() ( ) 信誉:100 Blog 加为好友 2007-06-03 11:39:19 得分: 0
补充一下
关于析构函数的作用:
在类的继承中,如果有基类指针指向派生类,那么用基类指针delete时,如果不定义成虚函数,派生类中派生的那部分无法析构。
[解决办法]
为什么析构函数可以是虚函数?
这个常常是 "如果一个类要用来做基类, 析构函数应该设置为virtual型 ", 这个其实完全在于使用各个对象能呈现多态: 基类的指针指向派生类对象, 从而该指针可以调用派生类的析构函数. 但有一点, 虚析构函数不同于普通的虚函数, 那就是编译器会在派生类虚构函数中调用基类的析构函数.
[解决办法]
其实说来说去, 是C++的标准问题. 楼上有兄弟说:
因为vbtl在构造函数调用后才建立,因而构造函数不可能成为虚函数
-----
粗看有一些道理, 但构造函数只会有运行时调用, 而vtbl在编译时就建造好了.
事实上, 建造vtbl的时机通常是析构函数被编译的时候, 至于构造函数与析构函数谁先编译, 真的是先编译构造函数吗, 这个我也不知道了.
[解决办法]
好像在Stan Lippman的 < <Inside the C++ Object Model> > 书上有讲这一系列动作顺序的.
[解决办法]
表示已经参与
[解决办法]
析构函数一般要声明为虚函数,这样可以防止内存泄露
[解决办法]
当你用指向基类的指针指向派生类时如果通过指针删除该对象的话,应该呈现动态绑定,删除派生类的对象,就是说调用派生类的析构函数