effective C++ 07_为多态基类声明virtual析构函数 读书笔记

来源:互联网 发布:python 改变当前路径 编辑:程序博客网 时间:2024/05/18 10:51
  1. 先把作者篇末的总结抄上:

polymorphic(带多态性质的)base classes应该声明一个virtual析构函数。如果class带有任何virtual函数,它就应该拥有一个virtual析构函数。
Class的设计目的如果不是作为base classes使用,或不是为了具备多态性(polymorphically),就不该声明virtual析构函数。

  1. 作者强调了不要继承String,所有STL容器。因为它们的析构函数不是virtual的。 如果像多态那样用的时候,调用析构函数时会导致不明确行为。 实际中子类对象的资源会泄漏。
  2. 作者强调了利用pure virtual析构制作抽象class的技巧。值得注意的是,该pure virtual析构函数 还是需要提供一份定义,否则编译器在子类的析构函数创建base class析构函数的调用时,链接器会报错。
class AWOV {public:    virtual ~AWOV() = 0; //声明pure virtual 析构函数};//你必须为这个pure virtual函数提供一份定义:AWOV::~AWOV() { }  //pure virtual析构函数的定义
阅读全文
0 0