条款7 为多态基类声明virtual析构函数
如有以下关系,不使用virtual关系会出现资源泄漏
//base class
class TimeKeeper
{
public:
virtual TimeKeeper* getTimeKeeper()
{
return NULL;
}
};
class AtomTimeKeeper: public TimeKeeper
{
public:
AtomTimeKeeper(){
pData=new char[];
}
TimeKeeper* getTimeKeeper()
{
return myAtom;
}
private:
int a;
char * pData;
static AtomTimeKeeper* myAtom;
};
AtomTimeKeeper* AtomTimeKeeper::myAtom = new AtomTimeKeeper();
int main()
{
AtomTimeKeeper myAtom;
TimeKeeper* pTime=myAtom. getTimeKeeper();
delete pTime;//这将引起部分内存泄漏
return ;
}