一、const说明
const是限定符,当不想改变某个值时可以使用const对变量的类型加以限定。
二、const使用
1.对于基本类型的变量
int a = 10;//定义一个变量
const int a = 10;//在类型前加const,a的值不可改变
int const a = 10;//和上句话一样是一个意思
2.对于引用来说
允许将const int&绑定到一个普通的int 对象上
int i = 0;
const int &p = i;//正确
此引用不能通过p来改变i的值,但是可以改变i的值
对常量的引用不能修改它所绑定的对象
const int a = 1024;
const int &val = a;//正确,引用及其对应的对象都是常量
对于上面的用法,一般把对const的引用简称为常量引用,当然只是一个简称,因为严格来说,并不存在常量引用,引用不是一个对象,所以无法让引用本身恒定不变
3.对于指针
const和指针存在两种组合,一种是指向常量的指针(指针常量),另一种是常量指针
①指向常量的指针:不能用于改变其所指对象的值,要想存放常量对象的地址,只能使用指向常量的指针。
const double val = 1024;
const double *p = &val;//正确
p = 1025;//错误,无法直接赋值
double dval = 100;
double eval = 1000;
const double *pp = &dval;//正确,但是不能通过pp来改变dval的值
pp = &eval;//正确,可以给指针重新指向其他地址
②常量指针:允许把指针本身定为常量,必须初始化,当初始化完成后则他的值就不再改变。
double val = 1000;
double dval = 100000;
double *const p = &val;//正确
p = &dval;//错误,p无法在指向另一个地址
*p = 10;//正确可以通过指针修改变量的值
4、顶层const和底层const
关于const是否是顶层const韩式底层const主要是判断 值是否可以改变,能改变就是底层const,不能改变就是顶层const。