C++引用计数和空引用设计[已关闭]

axr492tv  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(130)
    • 已关闭**。此问题为opinion-based。当前不接受答案。
    • 想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

2小时前关门了。
截至2小时前,社区正在审查是否重新讨论此问题。
Improve this question
我正在做一个C引用计数对象的实现,没有使用std::shared_ptr〈〉,也没有C异常,所以有一个C++模板对象,它保存了一个指向实际对象的指针,类似于shared_ptr〈〉,并且实现了引用计数语义。
我试图找出处理"空引用"的最佳设计。典型的方式是指向对象的指针是nullptr。显然,取消引用将导致异常,我正在努力避免。
我的另一个想法是,对于每个模板用户对象,我也可以创建一个"nil对象"......它基本上是用户类的默认初始化对象,空引用指向这个特定的对象。这样,解引用不会导致异常,但您仍然可以测试对象是否是空引用。使用这种方法会遇到什么问题?谢谢。

aoyhnmkz

aoyhnmkz1#

显然,解除引用将导致异常,我正在努力避免。
这是不正确的。解引用一个空指针不会导致异常抛出。它会导致未定义的行为。
因此,仅仅使用空指针值作为对象指针就足够了。如果智能指针的用户试图解引用空指针,他们就违反了智能指针的前提条件,并导致未定义的行为。他们根本不允许尝试。无论是否启用了异常,这都是正确的。
std::shared_ptr也是如此,除了实现std::weak_ptr的一部分和控制块分配失败之外,它也不使用异常。

相关问题