为什么这段代码不在类析构函数中调用 CloseHandles?
在我的代码测试中,我调用 '((MyClass*)pThis)->CloseHandles();' 明确地,但变量 m_bFinished 有错误的值。为什么 ?
#include <windows.h>
#include <异常>
我的班级
{
上市:
显式 MyClass( void **pThis)
{
*p这=这;
m_bFinished = 假;
//这里代码打开句柄
//发生错误
throw new std::exception("抛出异常!");
}
〜我的班级()
{
if ( ! m_bFinished ) CloseHandles();
}
无效关闭句柄()
{
如果(m_bFinished)返回;
//在这里关闭句柄。
m_bFinished =真;
}
私人的:
bool m_bFinished;
};
int main(int argc, char* argv[])
{
我的班级 * pMyClass;
无效 * pThis = NULL;
尝试
{
pMyClass = new MyClass(&pThis);
}
捕获(标准::异常 * e)
{
//删除pThis;
如果 ( pThis )
{
((MyClass*)pThis)->CloseHandles();
}
}
返回0;
}