const限定符用法汇总

const限定符限定变量的类型是一个常量,对象一旦创建后其值就无法改变,所以const对象必须初始化。

 

初始化  

const int i = get_size();     //运行时初始化
const int j = 42;                //编译时初始化

int k = 40;
const int ck = k;                //k的值 被拷贝给了ck

const对象的作用域 

默认情况下,const对象仅在文件内有效.

如果要在多个文件中共享const对象,必须在变量的定义之前添加extern关键字。 

//file_1.cc定义并初始化了一个常量,该常量能被其他文件访问
extern const int bufsize = fcn();  //这里必须加上extern,别的文件才可以用

//file_1.c 头文件
extern const int bufsize; //与file_1.cc中定义的bufsize是同一个

const的引用  

 因为引用所代表的就是另外一个对象的,别名而已,所以考虑引用所对应的对象是否被改变即可!!const对象也不是不能改变,下面会有提到!

1 const int ci = 1024;
2 const int &r1 = ci;    // 正确:引用及其对应的对象都是常量
3 r1 = 42;                   // 错误:r1 是对常量的引用
4 int &r2 = ci;             // 错误:试图让一个非常量引用指向一个常量对象
5                                //试想,c1的值不可改变,但r2的值可改变,那么改变r2就是改变c1,显然不对 
6 int i = 125;
7 const int & r3 = i;    //允许将const int & 绑定到一个普通的int对象上    
View Code

 

初始化和对const的引用

1 int i = 42;
2 const int &r1 = i;     //允许将const int & 绑定到一个普通int对象上
3 const int &r2 = 42;  //正确:r1是一个常量引用
4 const int &r3 = r1 * 2;    //正确:r3是一个常量引用
5 int &r4 = r1 * 2;       //错误:r4是一个普通的非常量引用    
View Code

 对于两种情况,见下面,编译器会报错!

int i = 42;
const int & r1 = i; //正确,但改变i的值,r1也会跟着改变
const int ci = 1024;

int &i1 = i;
i1 = 54;//正确
r1 = 54;//错误
int &r2 = ci*2; // 错误 VS 2015中提示:非常量引用的初始值必须为左值 int &r3 = r1; //错误 VS2015 提示:"int &" 类型的引用绑定到 "const int" 类型的初始值设定项时,限定符被丢弃

 

转载于:https://www.cnblogs.com/zhehan54/p/5223790.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值