const总结
2015-08-25 21:34
309 查看
const
const限定符将一个对象转换成一个常量,限定了其值不允许改变。常变量
int const val=5;//两种方法都可以; const int val1=6;//因为常量在定义后不能改变,所以定义时必须初始化;
任何企图修改val和val1的操作都会引起编译错误;
const引用
const应用是指向const对象的引用不能将普通的引用绑定到const对象;
const int r=10; const int &r1=r;//不能对r1赋值; int &r2=r;//错误;
const引用可以绑定到不同而相关的类型的对象或右值,非const只能绑定与该引用同类型的对象
const int &r=42;//直接绑定到字面值常量 double a=3.14; const int &r1=a;//注意,此后修改a的值r1并不会改变;
下面的情况也是可行的
int i=10; const int &r=10; const int &r1=r+i;
指向const对象的指针
如果一个指针指向const对象则不允许用指针来改变其所指的值(其实const对象指针一经定义,就不允许用该指针修改其所指对象的值,若其指向的是非const对象,可以通过其他方法修改其所指向的值。)其定义的形式为
const int *pt;//pt为指向int类型const对象的指针,pt并非const,而其指向的对象为const,因此定义时不用初始化
以下使用错误要避免:
1.可以给指针重新赋值使其指向另一个const,但不能通过指针修改其所指向的值
*pt=10;//错误
2.不能把一个const对象的地址赋给一个普通的非const对象的指针(可以把非const对象的地址赋给指向const对象的指针)
const int a=10; int *b=&a;//错误
3.不能用void*指针保存const对象地址,必须使用const void*
const int a=5; const void *b=&a;//正确; const *c=&a;//错误;
const指针
指针的类型为const,其值不能修改,必须在定义时初始化。int a=0; int *const pt=&a;//const指针 pt=pt;不能对其赋值即使是自己也不行;
可以使用指针修改其指向的值;
指向const对象的const指针
既不能修改指针指向的值也不能修改指针的指向(即指针中存放的地址值)const int a=0; const int *const pt=&a;//
下面的问题请注意:
typedef string *pstring中pstring实际上是指向string对象的const指针,而不是指向string类型的const对象的指针。typedef string * pstring; const pstring str=s;//假设string s="hello"; pstring const str2=s; string *const str3=s;//以上三种定义其实相同!!!
相关文章推荐
- day26
- PHP实用小程序(三)
- 使用CloudWatch Logs 收集应用程序日志
- 百度2014研发类校园招聘笔试题解答
- 投篮,当投篮率为多少时,选择玩法1或者玩法2
- Sort Colors
- Cocos2d-x 多分辨率屏幕适配
- 使用.NET中的XML注释(一) -- XML注释标签讲解
- android activity
- 解决Eclipse下面工程和文件乱码问题 [转载]
- 【学习总结】Info.plist和pch文件的作用
- node.js(四)path优化(路径优化)
- JAVA - 垃圾回收
- String,StringBuffer与StringBuilder的区别?
- There is a war (hdu 2435 最小割+枚举)
- Android:检测SD卡
- RAC+DG切换遇到的问题
- 重构的基本概念和原则
- strdup 的用法
- 文件系统解析