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对象也不是不能改变,下面会有提到!

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

初始化和对const的引用

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

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

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

最新文章

  1. 2000条你应知的WPF小姿势 基础篇<22-27 WPF生命周期, 基础类等>
  2. Java设计模式——线程安全的单件模式
  3. Mac iTerm2命令行快捷操作
  4. 用MVVM做了一个保存网页的工具-上篇
  5. 51nod 1605 棋盘问题 (博弈)
  6. web兼容性测试
  7. C#中通过三边长判断三角形类型(三角形测试用例)
  8. java -d64
  9. 【转】MessageBox
  10. 优雅地使用CodeIgniter 3之Session类库(1)(转)
  11. Linux内核开发基础
  12. 如何理解CSS中的浮动 :其实他就像乘坐扶梯一样
  13. 找到一个新的超好用的U盘启动制作工具了
  14. Ubuntu14.04安装有道词典
  15. 共享表空间VS独立表空间
  16. Git篇(基础)
  17. 常见问题一之拼接表格 js传递参数变量 Json接收值
  18. openvpn 给客户端固定隧道IP地址
  19. AnjularJS表单回车提交事件
  20. VS2010 SP1安装失败之”此计算机的状态不支持此安装“()

热门文章

  1. Oracle EBS 取总账期间
  2. cookie 常用的几种方法
  3. RHEL7系统管理之网络管理
  4. 卸载oracle 10g
  5. 使用SDWebImage淡入淡出的方式加载图片
  6. UIImageView的animationImages动画
  7. model.object对象查询过滤、增删改、Q
  8. java判断字符串内容
  9. 结合领域驱动设计的SOA分布式软件架构
  10. Spring源码分析之IOC容器(一)