C++:使用常量延长参考和寿命
C++: reference and lifetime extension using const
这是指C++编程语言。假设我们有一个类C
并执行以下操作:
C var1 = C(init_parameters);
C& var2(var1);
问题1:如果我们更改var2,例如var2.memberA = 3
,这是否也会影响var1
?还是我们创建了一个新对象,以便var2
不引用var1
?
问题2:假设我们有这样的函数:
const C& f(C var1) {
const C& tmp(var1);
return tmp;
}
我们现在可以调用上述函数吗,例如 value = f(var1)
并获得有效的参考value
?原则上,返回引用超出了范围,但const
延长了使用寿命吗?如果修改或删除var1
会发生什么情况,这是否会影响常量引用value
?换句话说,为了清楚起见,我可以像使用var1
的副本一样使用变量value
吗?
C& var2(var1);
和const C& tmp(var1);
不调用任何特殊成员函数。您正在声明引用 - 引用对象/变量的别名(是的,对var2
所做的更改实际上是通过var2
到var1
进行的)。
关于寿命延长,这适用于将右值绑定到const&
。 var1
是一个左值,其生存期固定在其范围内。
对于第二个示例,您无法返回对局部变量的引用(甚至不能返回对const
的引用)。别名不会改变这一点。调用方将得到的只是一个悬而未决的引用。
相关文章:
- 为什么make_nvp需要非常量参考?
- 什么是常量参考参数以及如何使用它?
- 常量参考的正确语法
- 为什么双转换到看似任何原始的常量参考
- 为什么未调用具有常量参考返回值的超载方法
- 用整数值初始化非常量参考
- 为什么可以将其他类型变量用作C 中常量参考参数参数的参数
- 常量参考延长对象的寿命,然后是const_cast,这是一个好主意吗?
- 具有常量参考的可变参数模板专用化
- C 中的参考和常量混淆
- 常量正确性和成员参考
- 完美的转发常量参考扣除错误
- 将计算结果保存到常量参考中
- 我如何安全地坚持使用C 常量参考
- 为什么参考模板参数不推导常量
- C++常量访问器和参考最佳实践
- 获取迭代器以供常量参考
- C++:使用常量延长参考和寿命
- 通过常量参考临时延长寿命
- 与非常量参考参数交换