zoukankan      html  css  js  c++  java
  • 虚析构函数

    虚析构函数
    在什么时候需要将基类析构函数设置成虚函数呢
    
    虚析构函数是为了解决这样的一个问题:基类的指针指向派生类对象,并用基类的指针删除派生类对象。
    如果某个类不包含虚函数,那一般是表示它将不作为一个基类来使用(这个我有这种说法吗?。。)。当一个类不准备作为基类使用时,使析构函数为虚一般是个坏主意。因为它会为类增加一个虚函数表,使得对象的体积翻倍,还有可能降低其可移植性。
    所以基本的一条是:无故的声明虚析构函数和永远不去声明一样是错误的。实际上,很多人这样总结:当且仅当类里包含至少一个虚函数的时候才去声明虚析构函数。
    抽象类是准备被用做基类的,基类必须要有一个虚析构函数,纯虚函数会产生抽象类,所以方法很简单:在想要成为抽象类的类里声明一个纯虚析构函数。
    
    #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;
    }
  • 相关阅读:
    分享一个详情页
    ES6初探,变量的声明
    ES6初探,什么是ES6
    提问回顾
    个人阅读&个人总结
    结对项目-数独程序扩展
    个人作业Week3-案例分析
    个人作业Week2-代码复审
    个人作业1
    【个人项目】数独
  • 原文地址:https://www.cnblogs.com/zzyoucan/p/4387060.html
Copyright © 2011-2022 走看看