《Effective C++》读书笔记(二)
Constructors, Destructors, and Assignment Operators (tsuzuku)
条款 7:为多态基类声明 virtual 析构函数
先来简单复习一下工厂模式:
有接口和一系列产品类。客户需要合适的产品类来执行接口函数时,他只需要访问工厂类,给一些参数告诉工厂类我需要的时什么产品,让工厂类来负责创建。
如果我们需要用工厂类创建一个类指针,那么返回的对象就必须在堆中被分配内存。堆内存是需要手动释放的。如果不声明 virtual 析构函数,那么不作为的析构函数就会被创建,即使你不在代码中 delete
你得到的产品类,也不会报错。如果遵循条款 7,那么未定义的析构函数就会被调用,从而出错。这个报错有效避免了用户不知道的内存浪费。
也就是说工厂模式下接口就得是个接口,纯虚类。
条款 8:别让异常逃离析构函数
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ekke の Space!
评论