[我研究了atlbase.h
以了解如何实现CComPtr<>
,并偶然发现了基类Release()
中的CComPtrBase<>
函数,该函数释放了如下所示的底层对象:
// Release the interface and set to NULL
void Release() throw()
{
T* pTemp = p;
if (pTemp)
{
p = NULL;
pTemp->Release();
}
}
我的知识不足以查看此临时指针pTemp
的意义是什么?
为什么此代码不只是:
void Release() throw()
{
if (p)
{
p->Release();
// EDIT:
p = NULL;
}
}
现在,如果您看一下析构函数,则析构函数的定义就像我对以上示例的期望一样,有什么区别?
这里有两种可能的解释: