C ++:左值和右值可互换吗?

时间:2018-09-03 00:56:47

标签: c++

我有以下代码:

perf stat -e fp_assist.any

如您所见,void g(int& i) { std::cout << "g(int&)" << std::endl; } void g(int&& i) { std::cout << "g(int&&)" << std::endl; } void f(int&& i) { g(i); } int main() { f(3); // g(int&) } 函数中的参数i是一个右值引用,因此,当它调用f时,对应的g(i)函数将一个右值应该调用引用(即结果应为g),但事实并非如此。实际上,g(int&&)被调用了。为什么?

我的猜测是,当我们进入g(int& i)函数内部时,f成为左值而不是右值,这是正确的吗?左值和右值可以互换吗?

0 个答案:

没有答案