首页 > 解决方案 > 当引用的变量从外部更改时,使用对 const 的引用是否安全?

问题描述

例子:

class A {
  const int &x;

 public:
  A(const int &x_) : x{x_} {}

  void foo() {
    std::cout << x << std::endl;
  }
}

int main() {
  int x{0};
  A a{x};
  a.foo() // prints "0"
  x = 1;
  a.foo() // prints "0" or "1"??
}

我可以安全地假设 A::foo() 将始终读取正确的值还是需要像volatile修饰符之类的东西?

标签: c++

解决方案


当引用的变量从外部更改时,使用对 const 的引用是否安全?

是的。

我可以安全地假设 A::foo() 将始终读取正确的值吗

是的...除非您假设该值不是正确的值。1 将是后一个函数调用中的正确值。


推荐阅读