不想往下看的话, 完整问题: 有什么使用 delete this 的必要的应用场景: 即: 不使用 delete this 会使代码变得 confused, 异常冗余, 或难以实现功能.
刚刚经历了一次校招面试, 面试官问我觉得 delete this 在成员函数中能不能使用和一些相关的问题(记不大请了). 我之前是没有写过这样的代码的, 所以当时觉得很疑惑. 面试要结束的时候, 他让我试一试使用 delete this.
经过 Google, C++ 规范中, delete this 是可以在非析构函数中调用的(否则会陷入无限递归). 在 C++ FAQ 中写道, 只要你足够小心, 也是可以调用的. (小心的条件: 对象在堆上创建, 当前成员函数是最后一个调用的, 且在成员函数中不会再使用 this, 成员函数外没有再对这一变量做任何操作)
在我没想到实例的情况下, 我搜了一下如何使用
Stackoverflow 上有一个 delete this 的实例, 是关于 引用计数, 在 release() 函数中, 计数值变为 0 时, 手动 delete this.
但这样子一方面不能做到线程安全, 另一方面使用 release() 函数为什么不在外面实现一个类, 管理这个类的引用计数值, 代码也会更安全.
所以想问下会 C++ 的 V 友, 有什么使用 delete this 的必要的应用场景: 即: 不使用 delete this 会使代码变得 confused, 异常冗余, 或难以实现功能.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.