const限定符
来源:互联网 发布:微信公众平台数据分析 编辑:程序博客网 时间:2024/05/16 09:14
const关键字用来定义一种常量,它的值不能被改变。对象在创建之后,其值不能改变,所以必须要在定义时就要初始化。1.基础用法
const int i = get_number(); const int j = 42; const int k; //用法错误,必须要初始化2.多文件共享const变量
编译器在编译过程中,将所有用到const常量的地方全部替换成对应的值,与define相似。 而这种替换,一般只在当前文件中有效。想要做到在多个文件中共享一个const常量,可以这样做---常量的声明和定义都添加extern关键字: extern const int i =512;//常量的定义,只能存在一个文件中 extern const int i;//常量的声明,可以放在多个文件中 而变量只需要声明加上extern,定义不需要添加extern,具体用法大家可以查阅一下extern的用法。3.const的引用---只读引用
把引用绑定在const的对象上,我们把这个引用称之为对常量的引用。const的作用是限制对对象的引用的功能,而这里就是限制引用只能读取对象的值,而不能进行修改。 const int i = 1024; const int &ci = i; //对常量的引用 ci = 42;//错误,只能读取,而不可修改 int &cj = i;//错误,非常量引用不能指向一个常量对象,这个很容易理解,常量对象是不能进行修改的,而如果非常量引用指向了常量对象,那就意味着能够通过它进行修改,这是不允许的一般来说,引用的类型必须与其所引用的对象的类型一致,也有例外---允许初始化常量引用时使用任意表达式作为初始值(非常量的对象,字面值,表达式):1)int i = 22; const int &ci = i;//这样做是可以的,我们要注意的就是,不能通过ci去修改i的值,却可以通过其他手段修改i的值2)double j = 2.2; const int &cj = j; //这样也是可以的,其实现的方法就是建立一个中间变量来实现: const int temp = j; const int &cj = temp;我们看到其实它是将cj绑定到了一个中间变量上的,这样即使修改了j的值,cj引用读取的值也不会发生改变。3)const int &k = 42; //这样也是可以的 除了int i = 2; const int &ci = i;这种引用开发中经常会用到,其他的感觉用处也不是很大,大家只需要记住,对于常量的引用是一种只读引用就可以了。
4.const与指针
const在指针这部分在面试过程中是经常会考的,大致就是区分常量指针和指针常量的区别---由于这两个词理解起来很麻烦,所以我一般不用这两个词。
1)指向常量的指针---const int *p;或者int const *p; const修饰的是int或者*p(*p是指针指向的值,而不是指针),说明指针指向的是常量(指针自己认为),而实际上它跟引用是相似的,这里不要求指针指向的必须是常量,也可以是变量,那么这个指针就是不能通过指针去修改指向对象的值,而可以通过其他手段来修改(变量的情况),同时我们也可以把指针指向其他的对象 int i = 42;const int j = 43; const int *p = &i; int const *q = &j;2)指针是常量---int * const p; const修饰p(p是指针),意思很清楚,这个指针是常量,那就意味着指针必须初始化并且不可再指向其他的对象。 int i = 2; int * const p = &i;
1 0
- const限定修饰符
- 限定符const
- const限定符
- C++ const限定符
- const限定符
- const限定符
- Const限定修饰符
- 浅谈const限定符
- const 限定符
- Const 限定符
- 关于const限定符
- const 限定符
- C++ const 限定符
- const限定符
- const限定符 全
- const 限定符
- const 限定符
- const 限定符
- Eclipse剪切/复制js代码时卡死的解决办法
- 利用重力传感器制作红包
- iOS开发编码规范建议
- 服务器性能分析工具
- Redis分布式锁思考
- const限定符
- py2.7 如何显示中文
- 循环结构<1>__笔记(5)
- strace
- 记录一下互联网日志实时收集和实时计算的简单方案
- linux上安装zookeeper
- Linux常用命令
- linux下从spi中读取一张logo图片并显示
- Linux Is Not Matrix——Nginx做成linux服务