在对象中实现引用计数时,"release and possible delete object"原语通常如下所示实现:
void CObject::Release()
{
--referenceCount;
if( referenceCount == 0 ) {
delete this;
}
}
Run Code Online (Sandbox Code Playgroud)
首先,delete this看起来很吓人.但由于成员函数立即返回并且不尝试访问任何成员变量,所以这些东西仍然可以正常工作.至少这是通常解释的方式.成员函数甚至可以调用一些全局函数来写入删除对象的日志.
C++标准是否保证成员函数可以调用delete this然后执行任何不需要访问成员变量和调用成员函数的事情,这将被定义为正常行为?
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |