常量变量与常量参考

时间:2013-10-29 18:23:43

标签: c++ reference constant-expression

在一些C ++源代码中,我看到表达式结果可以保存为常量崇敬。像这样:

 const int &x = y + 1;

这是什么意思? 有没有这方面的文件?我找不到它..


对我而言似乎相当于:

 const int x = y + 1;

因为程序的结果保持不变。它真的相同吗?

如果是,为什么语言允许第一种方式来编写它?看起来很混乱。

如果没有什么区别?

1 个答案:

答案 0 :(得分:5)

不同之处在于结果是否被复制/移动。在第一种情况下:

const int& x = y + 1;

y+1的值基本上保存为临时值。然后,我们将引用x初始化为此临时结果。在另一种情况下:

const int x = y + 1;

我们计算y + 1并使用值初始化常量变量x

在整数练习中,没有明显的区别。如果y+1恰好是一个大型数据结构,例如一个1MB数据的类,这可能会产生显着的差异。