klm*_*123 4 c++ reference constant-expression
在一些C++源代码中,我看到表达式结果可以保存为常量崇敬.像这样:
const int &x = y + 1;
Run Code Online (Sandbox Code Playgroud)
这是什么意思?有没有这方面的文件?我找不到..
对我来说,它似乎相当于:
const int x = y + 1;
Run Code Online (Sandbox Code Playgroud)
因为程序的结果保持不变.它真的相同吗?
如果是,为什么语言允许第一种方式来编写它?看起来很混乱.
如果没有什么区别?
不同之处应该是结果是否被复制/移动.在第一种情况下:
const int& x = y + 1;
Run Code Online (Sandbox Code Playgroud)
值y+1基本上保存为临时值.然后,我们初始化x对此临时结果的引用.在另一种情况下:
const int x = y + 1;
Run Code Online (Sandbox Code Playgroud)
我们使用该值计算y + 1并初始化常量变量x.
在使用整数的实践中,没有明显的区别.如果y+1碰巧是一个大型数据结构,例如一个1MB数据的类,这可能会产生显着的差异.