C++:使用常量延长参考和寿命

C++: reference and lifetime extension using const

本文关键字:参考 常量 C++      更新时间:2023-10-16

这是指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所做的更改实际上是通过var2var1进行的)。

关于寿命延长,这适用于将右值绑定到const&var1是一个左值,其生存期固定在其范围内。

对于第二个示例,您无法返回对局部变量的引用(甚至不能返回对const的引用)。别名不会改变这一点。调用方将得到的只是一个悬而未决的引用。