标签:
任何的类只要带有一个virtual函数那么就集合可以确定其应该有一个virtual析构函数。
class SpecialString : std:;string{ ... } SpecialString * pss = new SpecialString("Impending Doom"); string * ps = pss; ... delete pss;//这样会造成灾难,使得specialstring的析构函数并没有被调用。
注意虚的析构函数还有一种十分经典的用法:纯析构函数使得这个对象不能被创建对象。但是有时候又希望来使用纯虚基类,另一方面又没有可用的函数可以定义为纯虚函数。那么可以直接将析构函数就直接定义成一个纯的虚析构函数,这样就解决了矛盾。记得应该给这个pure 的析构函数提供一份定义,否则编译器在进行析构操作的时候胡报错的,应为派生类的析构函数总是要调用基类的析构函数的。例如:
class AWOV { public: virtual ~AWOC() = 0; };
标签:
原文地址:http://www.cnblogs.com/-wang-cheng/p/4854980.html