指针、引用必须注意浅深拷贝浅拷贝:只复制地址,没复制值缺省方式的拷贝构造和拷贝赋值,对包括指针在内的基本成员变量按字节赋值,导致浅拷贝问题。为了获得完整意义上的对象副本,必须自己定义拷贝构造和拷贝赋值,针对指针型成员变量做深拷贝。赋值表达式的值是操作符左值的引用。运算符重载的返回值都是自引用形式(r...
分类:
其他好文 时间:
2016-01-23 21:29:13
阅读次数:
179
1.lvalue估计来源于left value。 在赋值语句中lvalue = rvalue;位置处于左边。就是可以修改的值。rvalue估计来源于right value。处于赋值语句右边,是只读的不可修改的值。lvalue是可以赋值的,说明它是一个变量,它在内存中一定存在,一定有地址。所以&lva...
分类:
其他好文 时间:
2016-01-16 23:44:30
阅读次数:
247
上篇博客对右值、右值引用都做了简要介绍。我们也要时刻清醒,有时候右值会转为左值,左值会转为右值。
(也许“转换”二字用的不是很准确)如果我们要避免这种转换呢?
我们需要一种方法能按照参数原来的类型转发到另一个函数中,这才完美,我们称之为完美转发。std::forward就可以保存参数的左值或右值特性。因为是这样描述的:
When used according to the following...
分类:
编程语言 时间:
2016-01-09 01:04:30
阅读次数:
234
a+=(a++) 先计算a++ ,因为a为后++,a左边是左值不会报错;a+=(++a) 先计算+a,因为a为前++,a左边是左值不会报错;(a++) += a 这个是错误的。因为左值只能是变量,不能是表达式,(a++)是后++, 所以a不会先计算a++,是表达式,。所以会报错。(++a) +=.....
分类:
编程语言 时间:
2015-12-20 14:30:23
阅读次数:
126
1、举例说明 变量 常量 字面量1 int a=10;2 float b=1.234f;3 String c="abc";4 final long d=10L;a,b,c为变量,d为常量 两者都是左值;10,1.234f,"abc",10L都是字面量;2、常量池:常量池专门用来用来存放常量的内存区域...
分类:
编程语言 时间:
2015-12-15 00:59:26
阅读次数:
268
左值 右值 int a = 3;int *ap = &a;&a 右值*ap 左值可以取地址的为左值不可取地址的为右值例:T& fun1(){ T t; return t;//自动取址}
分类:
其他好文 时间:
2015-12-09 18:52:58
阅读次数:
147
中心:使用变量自增或者处减使用尽量使用++i与--i,而不要去使用i++与i--++i与--i可以做左值也可以做右值,而i++与i--只能做右值。对于基础类型i++与++i结果相同,但是i++肯定会产生临时变量,对于类类型就会执行构造函数和拷贝赋值函数,开销还是相对较大的,对于++i可以使用引用避免...
分类:
其他好文 时间:
2015-12-01 22:40:26
阅读次数:
183
右值引用形式:类型 && a= 被引用的对象。与左值引用&的区别在于:右值是临时变量, 可理解为右值的引用,右值初始化后临时变量消失。从实践角度讲,它能够完美解决C++中长久以来为人所诟病的临时对象效率问题。从语言本身讲,它健全了C++中的引用类型在左值右值方面的缺陷。从库设计者的角度讲,它给库设计者又带来了一把利器。从库使用者的角度讲,不动一兵一卒便可以获得“免费的”效率提升…...
分类:
编程语言 时间:
2015-12-01 12:57:25
阅读次数:
189
学了数据结构,实现下快排,public void QuickSort1(float[] seq,int low,int hight){int i = low;//记录最左值索引int j = hight;//记录最右值索引float temp = seq[low];//记录比较值(此处是最左值)wh...
分类:
其他好文 时间:
2015-11-27 15:02:00
阅读次数:
229
右值引用可以使我们区分表达式的左值和右值。C++11引入了右值引用的概念,使得我们把引用与右值进行绑定。使用两个“取地址符号”:int&& rvalue_ref = 99;需要注意的是,只有左值可以付给引用,如:int& ref = 9; 我们会得到这样的错误: “invalid initialization of non-const reference of type int& from an...
分类:
编程语言 时间:
2015-11-11 16:40:46
阅读次数:
223