条款07:为多态基类声明virtual析构函数
Declare destructors virtual in polymorphic base classes. 有许多种做法可以记录时间,因此,设计一个TimeKeeper base class和一些derived classes作为不同的计时方法,相当合情合理: class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); }; class AtomicClock:public TimeKeeper {...};//原子钟 class WaterClock:public TimeKeeper {...};//水钟 class WristWatch:public TimeKeeper {...} //腕表 许多客户只想在程序中使用时间,不想操心时间如何计算等细节,这时候我们可以设计factory(工厂)函数,返回指针指向一个计时对象。Factory函数会“返回一个base class指针,指向新生成的derived class对象”:TimeKeeper *getTimeKeeper(); 为遵守factory函数的规范,被getTimeKeeper()返回的对象必须位于heap。因此为了避免泄露内存和其他资源,将factory函数返回的每一个对象适当的delete掉很重要: TimeKeeper* ptk =