为什么允许悬挂引用

Why are dangling references allowed?

本文关键字:引用 许悬挂 为什么      更新时间:2023-10-16

C++标准草案规定

存储持续时间类别也适用于引用。这个引用的生存期是指它的存储持续时间。

然后

之后不能将引用更改为引用另一个对象初始化。请注意,将处理引用的初始化与分配给它的非常不同。传递参数(5.2.2)和函数值返回(6.6.3)是初始化。

因此,与指针不同的是,指针可以指向不同的内存,而引用则不能相同。为什么引用有自己的生命周期?

允许销毁引用某个引用的对象,并在其存储位置构造(例如,通过放置新对象)另一个对象。只要满足某些要求,原始引用将再次生效。

引用3.8[basic.life]/7

7如果在对象的使用寿命结束之后且在存储之前被占用的对象被重新使用或释放,新对象在原始对象占用的存储位置创建指向原始对象的指针,引用引用原始对象,或原始对象的名称将自动引用新对象,并且在新对象已经开始、可以用于操作新对象、或者可以使用新对象,if: