zoukankan      html  css  js  c++  java
  • 对于基类添加虚析构函数问题

    确定基类有虚析构函数
     
    给出一个简单程序
    #include <iostream>
     
    using namespace std;
     
    class Cv{
    public:
        Cv();
       ~Cv();
    };
     
    class CvChild1:public Cv{
    public:
        CvChild1();
        ~CvChild1();
    };
     
     
    Cv::Cv()
    {
        cout<<"cv"<<endl;
    }
    Cv::~Cv()
    {
         cout<<"~cv"<<endl;
    }
    CvChild1::CvChild1()
    {
        cout<<"cvchild1"<<endl;
    }
    CvChild1::~CvChild1()
    {
        cout<<"~cvchild1"<<endl;
    }
     
    int main()
    {
        Cv *cv = new CvChild1();
        delete cv;
        cout << "Hello world!" << endl;
        return 0;
    }
    会发现没有执行到CvChild1的析构函数。这边要把构建Cv的析构函数为虚函数,才会执行到,对于析构函数的释放是先释放派生类,在释放基类。与实例化想法,这个也好理解,就像组管理一样,先把组员删掉,然后删掉组,不然直接删掉组会出现问题。
     
    具体的可以参考effective c++ 07为多态基类声明virtual析构函数
     
    目前我体会的就是,在基类有派生的时候将析构函数变为纯虚的。没有派生的时候,就不要变,占的空间大,反而不好。
  • 相关阅读:
    npm私服包管理-发布
    搭建npm私服
    vue.js框架搭建
    基于cropper实现图片上传,剪切,下载
    base64转图片
    获取file的路径
    如何制定好测试策略(一)
    让测试团队慢慢死去!-有同感,转载
    2016-2016自动化测试的趋势
    2016-安全性测试
  • 原文地址:https://www.cnblogs.com/fengbing/p/3149977.html
Copyright © 2011-2022 走看看