• 虚析构函数


    虚析构函数
    在什么时候需要将基类析构函数设置成虚函数呢
    
    虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。
    如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用(这个我有这种说法吗?。。)。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。
    所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅当类里包含至少一个虚函数的时候才去声明虚析构函数。
    抽象类是准备被用做基类的,基类必须要有一个虚析构函数,纯虚函数会产生抽象类,所以方法很简单:在想要成为抽象类的类里声明一个纯虚析构函数。
    
    #include<iostream>
    using namespace std;
    
    class CBird
    {
    public:
        CBird() { cout << "CBird constructor." << endl; };
        //当基类
        virtual ~CBird() { cout << "CBird destructor." << endl; };
        virtual void fly() { cout << "CBird fly." << endl; };
    };
    
    class CLark : public CBird
    {
    public:
        CLark() { cout << "CLark constructor." << endl; };
        ~CLark() { cout << "CLark destructor." << endl; };
        void fly() { cout << "CLark fly." << endl; }
    };
    
    int main()
    {
        CBird * pBird = new CLark();
        pBird->fly();
        delete pBird;
        getchar();
        return 0;
    }
  • 相关阅读:
    jquery validate常用方法及注意问题
    jQuery Validate
    $('div','li') 和 $('div , li') 和 $('div li') 区别
    HTML中Div、span、label标签的区别
    Java中访问修饰符public、private、protecte、default
    shiro过滤器过滤属性含义
    (转载)常用Git命令清单
    Git-简明指南
    菜鸟程序员怎么才能提高自己的技术--(献给自己共勉)
    Visiual Studio CLR20r3问题
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/4387060.html
Copyright © 2020-2023  润新知