码:
void test(int&& a)
{
a++;
std::cout << a << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
并执行:
test(0);
Run Code Online (Sandbox Code Playgroud)
为什么输出1?因为我认为0是右值,它无法改变.
如果将非类非数组prvalue(例如数字文本)绑定到引用,则引用实际上将绑定到临时变量,该临时变量是原始值的副本.那是,
int&& a = 0;
Run Code Online (Sandbox Code Playgroud)
创建一个int值为零的临时对象,然后绑定a到该对象.
当您调用时test(0),适用相同的规则,并且引用参数绑定到临时参数; 临时增加,你得到结果1.当然你不是递增0本身.
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |