const 是constant的简写,原意是维持不变的,难于发生改变的原意。const 在C++中是用以润色内建类别表达式,自表述第一类,核心成员表达式,codice,表达式参数。具体文本用语如下表所示:
1.一般表达式
1.1 情形一
a被表述为两个自变量,因此能将a表达式给b,但无法给a再度表达式。对两个常量表达式是违规的事,即使a被C++指出是两个自变量,其值不容许修正。
1.2 情形二
对const表达式a,他们取表达式的门牌号并切换表达式给 对准int的操作方式符,接着借助*p = 8;再次对表达式a门牌号内的值表达式,接着输入查阅a的值。
从下面的增容询问处看见a的值被发生改变为8,但输入的结论依然是7。
从结论中他们能看见,C++接着指出a的值为一已经开始表述的7,因此对const a的操作方式就会造成下面的情形。因此一千万千万别轻而易举对const表达式想尽办法表达式,这会造成意料之外的犯罪行为。
2.操作方式符表达式
const 润色操作方式符表达式有下列四种情形。
2.1 情形一: const 润色操作方式符对准的文本,文本为不可表达式
则操作方式符对准的文本 8 不可发生改变。简称左定值,即使 const 位于 * 号的左边。
2.2 情形二: const 润色操作方式符,操作方式符为不可表达式
对 const 操作方式符 p 其对准的内存门牌号无法够被发生改变,但其文本能发生改变。简称,右定向。即使 const 位于 * 号的右边。
2.3 情形三:const 润色操作方式符和操作方式符对准的文本,指针和操作方式符对准的文本都为不可表达式
这时,const p 的对准的文本和对准的内存门牌号都已固定,不可发生改变。
对以上四种情形,根据 const 位于 * 号的位置不同,我总结三句话便于记忆的话:”左定值,右定向,const润色不表达式”。
3.表达式参数
3.1 情形一 :值传递的 const 润色传递
3.2情形二:const 参数为操作方式符,能防止操作方式符被意外篡改
3.3情形三:自表述类别的参数传递,需要临时第一类复制参数,对临时第一类的构造,需要调用构造表达式,比较浪费时间,因此他们采取 const 外加引用传递的方法
首先:引用传递就很凸显出它的优势,引用传递传递的是实参的门牌号,而值传递则是实参的拷贝,相当于把实参复制了一份;对STL容器、类或者结构体等的参数传递而言,使用引用传递能避免调用拷贝构造表达式,能够节省表达式调用时的内存分配,减少表达式调用过程中的时间消耗,从而提高系统效率。
其次:在参数传递的过程中,如果不希望在使用的过程中发生改变实参的值,那么能在前面加上“const”关键字,保持良好的代码风格。
4.表达式codice
4.1 情形一:const 润色表达式codice(返回操作方式符)
如果给以“操作方式符传递”方式的表达式codice加 const 润色,那么表达式codice(即操作方式符)的文本无法被修正,该codice只能被赋给加const 润色的同类别操作方式符。
4.2情形二:const 用于润色“返回引用”表达式的codice
如果表达式codice采用“值传递方式”,由于表达式会把codice复制到外部临时的存储单元中,加const 润色没有任何价值。例如把
4.3情形三:在表达式名后面表示是 C++ 常核心成员表达式,该表达式无法修正第一类内的任何核心成员,只能发生读操作方式,无法发生写操作方式。
参考: