4

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

 const int &x = y + 1;

这是什么意思?有这方面的任何文件吗?我找不到它。。


对我来说,它似乎相当于:

 const int x = y + 1;

因为程序的结果保持不变。真的等价吗?

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

如果没有,有什么区别?

4

1 回答 1

5

区别应该是结果是否被复制/移动。在第一种情况下:

const int& x = y + 1;

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

const int x = y + 1;

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

在实践中,整数不会有明显的差异。如果y+1碰巧是一个大型数据结构,例如一个 1MB 数据的类,这可能会产生显着差异。

于 2013-10-29T18:28:14.490 回答