C++ const引用浅析
上一篇 / 下一篇 2012-08-16 13:19:36 / 个人分类:C++
.`o/S*N;r6a!ZQ W,F.X0 顾名思义,const修饰的意思就是不能直接改变的值。
^N_!r!Y1c'^4?0 51Testing软件测试网RUz&}:NRs在C++的编码过程当中很多地方可以用到。51Testing软件测试网 P"U(]t`%gBS
51Testing软件测试网?2|.Nkb1、许多对象初始化之后,其值不用再改变
!hO$m1^)Dv:]V"p0 51Testing软件测试网ZM7DgV1@2、符号常量,使代码可以更加容易维护51Testing软件测试网 Nn.Ljo5\
@@ d.oV0Wy0 3、某些指针只是获取所指的对象的值,而不能改变其所指对象的值51Testing软件测试网O XI'o0~RM+c(`"V4b
4MsRl3quQ,E0 4、防止函数调用过程当中对所传递参数的修改
+q"pMvA0 51Testing软件测试网jj0iP h EDm%a9t用const修饰的对象,有以下需要牢记的特性:
6c1`(d+{9l9N0Fj"`,` W0 1、定义的时候必须初始化,后续不能再改变其值
+U4g,|9in K0)|9oyUdxP$f}0 2、如果一个const用另一个constant表达式初始化,则在编译的时候对其求值,同时不会分配存储空间,51Testing软件测试网q3xr cN
A!Bfv.Gxv0 也就是不能作为左值(其地址可以获取的某个对象)进行使用51Testing软件测试网]["W GexD6um
O;tzyY0 对于引用,指的是对象的一个别名。引用在定义的时候必须初始化,绑定到一个对象当中。
wUe1B5| W,s-z0+QX%TO_3y0 主要用在函数参数和函数返回类型当中。当const和引用结合起来使用的时候,要注意一些特性的区分,51Testing软件测试网H,ut6KN G
SJ+]9@9V^!eVo9G(B U0 下面通过例子进行简单说明。
)b`1{4XC08PB-Q _P"z(P0
/Fi`vrE6P gi0// 注意区分指针和隐用51Testing软件测试网*wkLZf*{@ int val = 2012;51Testing软件测试网 puh+hB;Y int& valr = val; // ok -U2F"@ e"xt s+H-Ow0int& valr1 = &val; // error51Testing软件测试网.UQ8OK R}3z7l int* p = &val; SJ(MM X*\T0int*& valr2 = &p; // ok,valr2是int*类型的引用 |
x9~sN'n1lI\0 51Testing软件测试网3Y[%X~5z _|
// 注意区分一般引用和常引用,const T&和T& xt c;\6`5~:C0int val = 2012; 2g0z(CEn0f9_lAN0int& valr = val; // ok q.Oy|/k8e9z0const int& valr1 = val; // ok 5Gu7bnS0int& valr = 2012; // error,一般引用T&的初始化表达式必须是左值,2012不是左值,所以不行 lnKa _$xiz2v-n0const int& valr1 = 2012; // ok,这里通过int temp = int(2012);构建一个temp,然后再通过temp初始化const int&,这个temp一直存在,直到程序块结束 |