const限定符
2015-09-15 13:25
267 查看
const限定符号有很多用处,但是它限制的对象和一般的对象有很多不同,下面来总结一下.
[1]const限定符号只在本文件内有效.因为编译器在编译的过程中要将所有的const对象替换成为它的初始值,所以它必须知道该对象的初始值.因此每一个文件都必须有一个const对象的定义.为了不引起冲突,那C++就限定了美国文件内的const对象都是独立的.
[2]但是有的时候const对象的初始值不是一个常量而是一个表达式,但又确实要在各个文件里面共享,这时候我们需要它像普通变量一样在一个文件内定义,在多个文件声明.这个时候就需要在定义和声明前面都加上extern.
[3]const限定的引用:常量引用指的是该引用是一个常量的引用.它在初始化时可以用任意表达式作为初始值.(const int &r2 = i*2)因为编译器这个时候会生成一个临时的常量对象并且将常量引用绑定到该临时量上面.由于常量引用只是为了使用对象的值,所以绑定在临时量上面也是没有关系的,它不会去试图改变它.通过常量引用改变对象是不可以的,但是如果对象不是常量对象,那么可以通过其他方式改变,比如直接对该对象赋值(int x = 1;const int &i = x;x = 2(legal);i = 1(illegal))
[4]指向常量的指针(const int *p),这样的指针可以指向非常量,但是不能通过这个指针去改变这个非常量.
[5]const指针(int * const p),从右到左阅读这个定义式,指针本身是一个常量,它指向其他类型的对象.指针本身是不能被修改的,但是可以通过指针修改它所指向的对象.
[6]所有const变量都必须被初始化.
题目:
(1)int * p1,i,*const p2;//illegal 没有初始化 p2(2)const int *p,ic;//legal
(3)const int *const p3;//没有初始化p3 ,p3 是一个常量指针,它指向一个整形常量
(4)const int &const i//illegal,i 是一个常量对象,它不能同时是一个引用.如果它是引用,它就不能是一个对象.
(5) p1 = p3(illegal,指针类型不一样)
(6) p3 = &ic(illegal,p3是一个const指针,不能被改变)
(7)ic = *p3(illegal,ic是一个const对象)
相关文章推荐
- vs2010配置安装使用log4cplus日志系统
- mysql mysql_list_dbs()函数
- 设计模式之抽象工厂模式
- android机型排行榜(201509)
- noip2006 JAM计数法 (模拟)
- C++如何返回函数指针
- WebRTC 介绍 架构 等等
- php Pecl Install的安装使用说明
- CAS4认证成功后不管有没有service参数,都进入指定页面
- Xcode6中自动布局autolayout和sizeclass的使用
- CentOS6.5手动升级gcc4.8.2
- xampp中mysql数据库导入最大限制的简单解决
- 【转】MATLAB实现构造Euler环游图的算法——数学建模
- android 动态背景的实现以及SurfaceView中添加EditText控件
- Foundation框架
- 马哥linux学习(linux上的包管理)
- Fedora21在桌面显示应用软件图标
- Android网络请求中的回调
- SQL Server遍历表的几种方法
- pdf处理页面时发生错误。读取本文档时出现问题(109)