一,const概念:如果希望定义一种值不能被改变的变量可以用关键字const对变量加以限定:const int buffsize = 512;
因为const对象一旦创建后其值无法改变,所以const对象必须初始化,当然也可以是任意复杂的表达式;
1),主要限制就是只能在const类型的对象上执行不改变其内容的 *** 作。
2),默认状态下,const对象仅在文件内有效。
如果希望这类const对象像其他对象一样工作,就是说只在一个文件中定义const,而在其他多个文件中声明并使用它。
解决办法就是:对于const变量不管是声明还是定义都添加extern关键字,这样只需定义一次就可以:extern coonst int buffSize = fcn();
1,const 的引用
可以把引用绑定在const对象上,称之为对常量的引用。
const int ci = 1024;
const int &r1 = ci;
1)对const的引用可能引用一个并非const的对象。
常量引用仅对引用可参与的 *** 作做出了限定,对于引用的对象本身是不是一个常量未做限定。
int i = 42;
int &r1 = i;//引用r1绑定对象i
const int &r2 = i;//r2也绑定对象i,但是不允许通过r2修改i的值
r1 = 0;//r1并非常量,i的值修改为0
r2 = 0;//错误,r2是一个常量引用
2,指针和const
与引用一样,也可以令指针指向常量或者非常量。
指向常量的指针不能用于改变其所指对象的值。
const double pi = 3.14;
double *ptr = π//错误,ptr是一个普通指针
const double *cptr = π//正确,cptr可以指向一个双精度常量
*cptr = 42;//错误,不能给*cptr赋值
3,const指针
指针是对象而引用不是,因此可以把指针本身定为常量。
常量指针必须初始化。
把*放在const关键字之前用以说明指针是一个常量,即不变的是指针本身的值而非指向的那个值。
int errNumb = 0;
int *const curErr = &errNumb;//curErr将一直指向errNumb
const double pi = 3.14159;
const double *const pip = π//pip是一个指向常量对象的常量指针
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)