c++ - 当引用的变量从外部更改时,使用对 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修饰符之类的东西?
解决方案
当引用的变量从外部更改时,使用对 const 的引用是否安全?
是的。
我可以安全地假设 A::foo() 将始终读取正确的值吗
是的...除非您假设该值不是正确的值。1 将是后一个函数调用中的正确值。
推荐阅读
- javascript - React Hooks - 文本输入和将输入存储在数组中
- c++ - QML ChartView:mapToValue 不是很准确?
- node.js - 尝试在 Mongoose 5.11.14 中使用异步迭代器时出现打字稿错误 TS2504:必须有一个“[Symbol.asyncIterator]()”
- python - 如何使用 plotly、matplotlib、seaborn 添加科学“参考”?
- python - 每个 QStackedWidget 页面的类
- javascript - 使用Javascript修改具有重复键的字符串数组中的字符串
- kubernetes - Nginx Ingress Controller:宿主变量的用途是什么?
- c# - C# 中长时间运行的异步任务和长时间运行时间受限的异步任务
- javascript - Node.js 程序跳过第一个用户输入功能,只执行第二个?
- arrays - 每行处理两个字符串,在单个 bash 脚本中处理数据和进程