大本赢彩票开户

码迷,xscp18.com
大本赢彩票开户 > 其他好文 > 详细

左值与右值引用 详解

时间:2019-09-01 01:50:16      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:main   dir   优化   形参   函数模板   自动   oid   结果   pre   

说明

顾明思议

左值引用 就是对左值的引用 就是给左值取别名

大本赢彩票开户右值引用 就是对右值的引用 就是给右值取别名

当改变别名是 该值也相应的改变

那么 何以区分哪些是左值哪些是右值呢?

左值右值
在内存中有特定地址的量 在寄存器中的量

因为申请的变量会在内存中开辟一块地址 左值也叫有特定地址的量

比如:

int a=10;            //a 是左值

double b=1.3;		 //b 是左值

左值引用

int & Ta=a;	    	//引用左值   故 是一个左值引用

double & Tb=b;	    //引用左值 故是一个左值引用

大本赢彩票开户那么 何么 寄存器中的量又是什么?

通俗的说 寄存器量 就是 运算值、函数返回的临时变量或者常量
这些都有一个共同特点 :都不可对其取地址

比如:

‘a‘  是常量  故为右值
3    是常量  故为右值
1+3     运算会将 1+3 的结果保存至 寄存器 此时并不在特定的内存位置 故 该值为右值 是临时变量 
      
int add()
{
	return 0;
}   		//该函数返回的值并不会保存在内存中 仅出现在临时量中  语句执行完毕后 该临时量被销毁


右值引用

char && a="a";	        //常量 
int && b=1+3; 	        //临时变量
int&& c= add();   	    //函数引用

重点:

不可将左值引用 到 右值

不可将右值引用 到 左值

左值引用实例

#include<iostream>
using namespace std;
int main(void)
{
	int a=10;                //左值
	int & In_a=a;            //左值引用
	cout<<"Old:"<<In_a<<endl;	

	In_a=2;	          	     //改变别名
	cout<<"New:"<<In_a<<endl;
	
	return 0;
}

结果:
技术图片

 


当左值引用右值时:
技术图片

 

右值引用实例

#include<iostream>
using namespace std;

int add()
{
	return 0;
}										//返回常量 0

int fun(int&& f)						//形参为右值引用
{
	cout << f << endl;
	return 1;
}										//返回常量 1
int main(void)
{
	‘a‘;								//常量 ‘a‘
	3;									//常量  3
	1 + 3;								//寄存器量 1+3结果 4 

	//使用右值引用

	char && Char_a = ‘a‘;
	cout << "‘a‘:" << Char_a << endl;

	int && Int_a = 3;
	cout << "3:" << Int_a << endl;

	int && Int_b = 1 + 3;
	cout << "1+3:" << Int_b << endl;

	int &&Int_c = add();
	cout << "add()return 0:" << Int_c << endl;

	int && Int_d = fun(3);    //输出3
	cout << "fun() 3:" << Int_d << endl;
	
	return 0;
}

结果
技术图片

 


当右值引用左值时:
技术图片

以上为 左值右值引用规则 及使用方法

但 模板引用则不同
这是因为 自动推到类型优化后的结果

如:

#include<iostream>

using namespace std;

template<typename T> 					//函数模板
void fun(T&& f)							//兼容 左值引用 和右值引用
{
	cout << f << endl;
}



int main(void)
{
	int a = 10;
	fun(a);
	fun(3);	   //兼容 左值引用 和右值引用


	return 0;
}

结果
技术图片

但当我们 提供左值引用版本时 便会优先匹配左值引用版本

左值与右值引用 详解

标签:main   dir   优化   形参   函数模板   自动   oid   结果   pre   

原文地址:https://www.cnblogs.com/tinaluo/p/11440984.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
           
© 2014 xscp18.com 版权所有 京ICP备13008772号-2
迷上了代码!
易迅彩票投注 尚合彩票开户 葡京彩票投注 趣彩彩票投注 福祥彩票开户 中财彩票开户 新火彩票开户 迪士尼彩票开户 易彩彩票开户 98彩票开户