C++自学笔记006左值引用和右值引用
2023-12-28 22:38:35
C++自学笔记006左值引用和右值引用
无论左值引用还是右值引用,都是给对象取别名。
左值引用
左值引用就是对左值的引用,给左值取别名。
int& ref_data1 = data1;
int*& ref_ptr_data1 = ptr_data1;
int& ref_data2 = *ptr_data2;
const int& ref_con_data1 = con_data1;
注意
1, 左值引用只能引用左值
2,const左值引用既可以引用左值,也可以引用右值
int data1 = 0;
int& ref_data1 = data1;
//int& ref_data1 = 8; // 编译会报错
const int& con_ref_data1 = data1;
const int& con_ref_data2 = 8; //不会报错
const double& con_ref_data3 = data1 + 120;
右值引用就是对右值的引用,给右值取别名。
int&& right_ref1 = 10;
double&& right_ref2 = x + y;
double&& right_ref3 = fmin(x, y);
注意
1,右值引用变量是左值
2,因为右值引用变量是左值,所以右值引用变量可以取地址可以赋值
3,const右值引用变量可以取地址但不可以赋值
4,右值引用可以引用被move的值
int&& right_ref_data1 = 10;
double&& right_ref_data2 = x + y;
const double&& con_right_ref_data3 = x + y;
int data4 = 10;
//int&& rrt = t; // 会报错
int&& right_ref_data4 = std::move(data4);
文章来源:https://blog.csdn.net/weixin_43111445/article/details/135276612
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!