各位好,有个关于析构函数的问题需要指教
YuHao 2001-01-13 12:54:00 我把我遇到的问题简化一下,大概是这样:
class CBase
{
protected:
static CList alist;
virtual ~CBase();
};
CBase::~CBase()
{
//在这里对alist作一些清除工作
}
class CA:public CBase
{ ...}
class CB:public CBase
{...}
CA aa;
CB ab;
..
因为aa和ab析构的时候都要调用base析构函数,而alist的清除工作肯定要互斥访问,我的问题就是:aa和ab会不会在同一时刻调用CBase::~CBase(aa,ab都在主线程中)?如果是的话,那么我就得用同步对象了,但是如果不会的话,那么我何必自找麻烦呢?
说明:清除list的工作肯定也可以放在其他地方,从而避免这个问题,但是权衡了其他因素以后,我觉得还是放在基类的析构函数中比较好。