zoukankan      html  css  js  c++  java
  • 没有虚析构函数的类是危险的

    要点10、为什么继承一个没有虚析构函数的类是危险的?

      一个没有虚析构函数的类意味着不能做为一个基类。如std::string, std::complex, 和 std::vector 都是这样的。为什么继承一个没有虚析构函数的类是危险的?当你公有继承创建一个从基类继承的相关类时,指向新类对象中的指针和引用实际上都指向了起源的对象。因为析构函数不是虚函数,所以当你delete一个这样的类时,C++就不会调用析构函数链。举个例子说明:    
    class A
    {
     public:
     ~A() // 不是虚函数
     {
     // ...
     }
    }; 
    class B: public A //错; A没有虚析构函数
    {
     public:
     ~B()
     {
     // ...
     }
    };
    int main()
    {
     A * p = new B; //看上去是对的
     delete p; //错,B的析构函没有被调用
    }   

    http://blog.csdn.net/lanbing510/article/details/4774336

  • 相关阅读:
    jQuery 插件
    jQuery 构造函数
    jQuery.merge()方法
    插入排序法
    归并排序法
    冒泡排序法
    选择排序法
    Jetty
    分布式锁&&redis
    Tomcat和设计模式
  • 原文地址:https://www.cnblogs.com/findumars/p/8418521.html
Copyright © 2011-2022 走看看