gpt4 book ai didi

c++ - "delete this"有什么用?

转载 作者:IT老高 更新时间:2023-10-28 12:46:41 30 4
gpt4 key购买 nike

今天,我看到了一些遗留代码。在析构函数中有一个类似“delete this”的语句。我认为,这个调用将是递归的。为什么它有效?

我在Y!上做了一些快速搜索,发现如果需要限制用户创建堆栈对象,我们可以将析构函数设为私有(private)并提供删除实例的接口(interface)。在提供的接口(interface)中,我们要对这个指针调用delete。

还有其他使用这种语句的情况吗?

最佳答案

“delete this”通常用于引用计数的对象。对于引用计数的对象,何时删除的决定通常放在对象本身上。下面是一个 Release 方法的示例 [1]。

int MyRefCountedObject::Release() {
_refCount--;
if ( 0 == _refCount ) {
delete this;
return 0;
}
return _refCount;
}

ATL COM 对象是这种模式的主要示例。

[1] 是的,我意识到这不是线程安全的。

关于c++ - "delete this"有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/447379/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com