为什么允许悬挂引用
Why are dangling references allowed?
C++标准草案规定
存储持续时间类别也适用于引用。这个引用的生存期是指它的存储持续时间。
然后
之后不能将引用更改为引用另一个对象初始化。请注意,将处理引用的初始化与分配给它的非常不同。传递参数(5.2.2)和函数值返回(6.6.3)是初始化。
因此,与指针不同的是,指针可以指向不同的内存,而引用则不能相同。为什么引用有自己的生命周期?
允许销毁引用某个引用的对象,并在其存储位置构造(例如,通过放置新对象)另一个对象。只要满足某些要求,原始引用将再次生效。
引用3.8[basic.life]/7
7如果在对象的使用寿命结束之后且在存储之前被占用的对象被重新使用或释放,新对象在原始对象占用的存储位置创建指向原始对象的指针,引用引用原始对象,或原始对象的名称将自动引用新对象,并且在新对象已经开始、可以用于操作新对象、或者可以使用新对象,if:
相关文章:
- 将对象数组的引用传递给函数
- 什么时候在C++中返回常量引用是个好主意
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 何时在引用或唯一指针上使用移动语义
- 如何在c++中使用引用实现类似python的行为
- 编译C++时未定义的引用
- Ctypes wstring通过引用传递
- c++r值引用应用于函数指针
- 理解c++中的引用
- C++取消引用指针.为什么会发生变化
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- C++Boost Asio Pool线程,带有lambda函数和传递引用变量
- 强制转换为引用类型
- 引用一个已擦除类型(void*)的指针
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 具有默认值的引用获取函数
- 如何使用基类指针引用派生类成员
- 为什么允许悬挂引用
- Lambda:一个可以悬挂的按引用捕获