1.右值与左值
- 左值:可以取地址的、有名字的变量,有持久性;
- 右值:一般是不可寻址的常量,或在表达式求值过程中创建的无名临时对象,短暂性的。
2.右值引用
C++11新增了另一种引用——右值引用。这种引用可指向右值,使用&&声明。文章来源:https://www.toymoban.com/news/detail-800833.html
右值引用只能引用临时变量和常量值。文章来源地址https://www.toymoban.com/news/detail-800833.html
int main()
{
double a = 15.2;
//double& a1 = a * 2 + 10.2;//错误,不能引用临时变量
double&& ra = a * 2 + 10.2;//右值引用,合法
//double& b1 = sqrt(100);//错误,不能引用常量
double&& rb = sqrt(100);//合法
cout << ra << "," << rb << endl;
return 0;
}
3.const引用与右值引用的区别
- const引用:可以引用普通左值、const左值、右值,但不能修改const引用的值。
- 右值引用:不能引用左值,只能引用右值,但右值引用的值可以修改。
int main()
{
//const引用
int a = 10;
const int ca = 20;
const int& b = a;//const引用,引用普通左值
const int& c = ca;//const引用,引用const左值
const int& d = 30;//const引用,引用右值
cout << b << "," << c << "," << d << endl;
//b=100;//报错,不能修改const引用的值
//右值引用
//int&& e = a;//报错,右值引用,不能引用左值
//int&& f = ca;//报错,右值引用,不能引用const左值
int&& g = 30;//右值引用,引用右值
g = 300;//右值引用,值可以修改
cout << g << endl;//300
return 0;
}
到了这里,关于C++右值引用,右值引用与const引用的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!