分享

抽象类 虚析构函数 纯虚析构函数

 cupid 2015-01-17
作为基类的类一定要定义虚析构函数(否则delete时只能调用基类的析构函数)

纯虚函数不代表不能出现函数体,只是说明这个类是一个抽象类,不能出现对象实体;而作为基类的抽象类一定要定义纯虚析构函数的函数体,因为它会在派生类的对象删除时被链接调用。。。不定义的话必然出现link error
构造函数一定不能是虚函数
在构造函数中调用虚函数,实际是按普通函数调用的,没有多态性;应尽量避免
#include
using namespace std;

class base{
public:
    base(void){}
    //~base();
    virtual ~base()=0;
};
base::~base(){
    cout<<"base delete..."<}
class derived:public base{
public:
    ~derived(){
        cout<<"derived delete..."<    }
};
int main(){
    base *bp;
    bp=new derived;
    delete bp;
}
写一段备忘……

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多