在一些C ++源代码中,我看到表达式结果可以保存为常量崇敬。像这样:
const int &x = y + 1;
这是什么意思? 有没有这方面的文件?我找不到它..
对我而言似乎相当于:
const int x = y + 1;
因为程序的结果保持不变。它真的相同吗?
如果是,为什么语言允许第一种方式来编写它?看起来很混乱。
如果没有什么区别?
答案 0 :(得分:5)
不同之处在于结果是否被复制/移动。在第一种情况下:
const int& x = y + 1;
y+1
的值基本上保存为临时值。然后,我们将引用x
初始化为此临时结果。在另一种情况下:
const int x = y + 1;
我们计算y + 1
并使用值初始化常量变量x
。
在整数练习中,没有明显的区别。如果y+1
恰好是一个大型数据结构,例如一个1MB数据的类,这可能会产生显着的差异。