【发布时间】:2013-12-15 21:58:31
【问题描述】:
如果我理解正确的话,引用的动机是让“通过引用”工作变得更容易和更清晰,而不必为指针取消引用而烦恼。但是它们本质上是常量,它们只能指向一个对象,即使实际上引用是一个指针并且重新分配在技术上是可能的。如果引用可以为空,这似乎也是有益的,例如在使用它之前检查返回的引用是否有效,但这不是一个功能。
省略这些特性并按原样呈现特性背后的特殊动机可能是什么?
【问题讨论】:
-
关于“如果引用可以为空,例如检查返回的引用是否有效,在使用它之前似乎也有好处”:支持空引用如何帮助检查有效性?空指针是有效的。无效的悬空指针不为空且不可检查。我认为引用也是一样的,是吗?
-
更好,因为引用不能为“null”,你甚至不必检查任何东西!
-
@KerrekSB - 如果您无法检查操作是否失败并且返回无效,这会更好吗?如果对象已经在寄存器上,则检查将花费一个周期,为更好的安全性付出很小的代价。考虑到引用只不过是一个禁用算术和自动取消引用的指针,为什么不将指针能力镜像为 null 并因此表示无效?引入引用是为了“更容易和更清洁”地使用指针,不是吗?
-
@user2341104:据我所知,这不是添加引用的原因。如果您不再将它们视为真正的指针,而是开始以标准对它们的方式来考虑它们,那么您的论点就不适用了。
标签: c++ reference language-features