一、const通用特点
1)const对象必须初始化
2)const对象仅在文件内有效
如果要在多文件中访问一个const对象,则在定义前加extern;非const变量定义时,不用加extern就可以多文件使用。
//file1.cc
extern const int x=1;
//file1.cc
extern const int x;
二、const的引用(常量引用)
1)定义
不能通过常量引用改变绑定对象
const int i=10; //整形常量
const int &v=i; //常量引用绑定i
v=6; //报错,不能改变!
2)初始化
int i = 10;
const int &v1 = i; //非常量对象
const int &v2 = 10; //字面值
const int &v3 = 5*4; //一般表达式
//对于普通的引用类型必须和所引用的一致
int &v4 = i; //只能绑定非常量的Int型
实际机制:创建一个临时量(与引用类型一致,且为常量).
例如第一个v1
const int temp=i<pre class="cpp" name="code"> const int &v1=temp;
三、指针和const
1)底层const(指向常量的指针)
不能通过指针改变所指对象的值,常量对象必须用顶层const指针指向。
类型必须一样,但是指向常量的指针可以指向常量对象也可以指向非常量对象。
可以不初始化。
拷贝时,二者需要都是底层const。
int v1=0;
const int *v2 = &v1; //OK
v1=5; //OK
*v2=6; //报错
2)顶层const(常量指针)
指针本身的值不变,即一直指向那个对象。
进行对象拷贝时无影响。