zoukankan      html  css  js  c++  java
  • Effective C++ .07 virtual析构函数的提供

    主要讲了,

    1. virtual析构函数的作用与调用顺序

    2. 使用时机,并不是使用了继承就要把基类的析构函数变为虚函数(virtual),只有当用于多态目的时才进行一个virtual析构函数的定义。

    3. 不要继承那些没有将析构函数定义为virtual的类来实现多态行为 

    对于1:

    有些类继承可能只是一个组合的作用,这样加入virtual析构函数就会使得类实例的空间占用增加(一个vptr)

    对于2:

    如果继承确实是为了实现多态效果,那么最好定义一个virtual析构函数(自己认为,当不涉及到资源释放,其实也没必要进行定义,但是防范未然,因为已经使用了多态,那么vptr的存在就必不可少了,加入一个virtual析构函数并不会再引起类实例数据存放上的巨大变动)

    对于3:

    特别注意STL中的许多容器都要去继承他们来实现多态,可能导致自己扩展的部分资源未被释放(因为仅仅会调用基类的析构函数,而它恰恰不是virtual函数)

  • 相关阅读:
    General error: 1364 Field 'id' doesn't have a default value
    数据库 主键、外键和索引的区别
    宝塔升级
    服务器数据库性能调优
    关于TP5.1的跳转
    用PHP写九九乘法表
    Java中的接口
    Java中的继承
    超市库存管理系统
    Java中的封装
  • 原文地址:https://www.cnblogs.com/lailailai/p/4176712.html
Copyright © 2011-2022 走看看