码迷,mamicode.com
首页 > 其他好文 > 详细

左值右值

时间:2016-07-06 00:09:31      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

左值就是可以放在赋值号左边赋值的,必须要在内存有实体

右值就是可以放在赋值号右边取出值赋给其他变量的值,可以在内存,也可以在CPU

 

引用说明为对象建立引用名,即别名

引用在定义初始化时与对象名绑定,程序中不能对引用重定义

一个对象的别名,从使用方式和效果上,与使用对象名一致

定义形式:类型&引用名=对象名;

 

//引用可以改变指针的指向

//引用可以改变指针指向的值

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void main()
 5 {
 6     int num1(5);
 7     int num2(10);
 8 
 9     int *pnum(&num1);
10 
11     int * & rpnum = pnum;//引用可以改变指针的指向
12 
13     *rpnum = 100;//引用可以改变指针指向的值
14 
15     rpnum = &num2;
16 
17     std::cout << *pnum << std::endl;//10
18 
19     system("pause");
20 }

 

//引用右值,一般用于企业开发,内存优化

//用于对象拷贝

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void main()
 5 {
 6     int num1(5);
 7     int num2(10);
 8 
 9     int * && rpnum = &num1;//引用右值,一般用于企业开发,内存优化
10 
11     int *p = rpnum;//用于对象拷贝
12 
13     system("pause");
14 }

 

//指针与引用

int a;

int * pa;

int & ra=a;

pa=&a;

 

改变外部变量,需要地址或者引用

左值引用是用指针实现的

 

返回引用的函数

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 int & get()
 5 {
 6     int a = 10;//a在栈上
 7     int & ra = a;
 8 
 9     std::cout << "&a=" << &a << std::endl;
10 
11     return ra;
12 }
13 
14 void main()
15 {
16     int & ra = get();
17 
18     std::cout << ra << std::endl;
19 
20     std::cout << "ABCD" << std::endl;
21 
22     std::cout << ra << std::endl;
23     
24     system("pause");
25 }

 

&左值引用

&&右值引用

 

 1 #include <iostream>
 2 using namespace std;
 3 
 4 void main()
 5 {
 6     int a = 10;
 7 
 8     int & ra = a;//&左值引用
 9 
10     int * && pa = &a;//&&右值引用
11 
12     //int * & & pa1 = &a;//右值引用,不能分开写
13     
14     system("pause");
15 }

 

左值右值

标签:

原文地址:http://www.cnblogs.com/denggelin/p/5645181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!