哪个网站做外链视频好,网名生成器,网站seo快速排名软件,文库网站建设开发右值引用保存临时变量#xff08;函数返回值#xff09;的问题
#xff1a;临时变量是右值
1、普通变量接收函数返回值#xff1a; 2、右值引用变量接收函数返回值#xff1a; 3、用const int 和右值引用是一样的效果#xff0c;只是const int 就不可以修改…右值引用保存临时变量函数返回值的问题
临时变量是右值
1、普通变量接收函数返回值 2、右值引用变量接收函数返回值 3、用const int 和右值引用是一样的效果只是const int 就不可以修改这个临时变量而已 4、用int 就不行这是左值引用就会提示类型不对 error: invalid initialization of non-const reference of type ‘int’ from an rvalue of type ‘int’ int constRef add(x);
结论
无论是用右值引用还是普通变量保存返回值最终在函数返回时都是通过eax寄存器保存的。
区别在于 1、普通变量就直接将eax赋值给普通变量 2、右值引用就将eax的值放到另一个位置临时变量然后再将这个位置的地址赋值到右值引用上。 3、常量左值引用 和右值引用是一样的效果只是常量左值引用就不可以修改这个临时变量而已 所以函数返回值的临时变量不是一直存在的要看返回时用什么类型的变量来接收