const
const int bufSize = 512;
const的引用
“对const的引用”简称为“常量引用”
const int ci = 1024; //常量
const int &r1 = ci; //对常量的引用 --> 常量引用,不允许通过r1修改ci
不能通过引用来改变它所绑定的值
double dval = 3.14;
const double &rd = dval; //不允许通过rd来修改dval
指向常量的指针
const double pi = 3.14;
const double *cptr = π //不能通过cptr改变pi的值
可以将上式看做const double* cptr
, const
锁住 double* cptr
, 即指针指向的为常量
指向常量的指针, 指向常量的引用可以看做指针/引用的自律性,不通过指针/引用来修改指向/绑定的对象。但并不能保证对象不通过其它途径被修改。
int ival = 5; //可以修改
const int &ri = ival; //ri'承诺'不修改ival
const int *pi = &ival; //pi'承诺'不修改ival
const指针
int errNum = 0;
int *const curErr = &errNum; //指针是常量
可以将上式看做int* const curErr
, const
锁住 curErr
, 即指针为常量
const double pi = 3.14;
const double *const pip = π //pip为常量指针, 同时指向一个常量
后一个const表明pip不允许被修改,前一个const表明指向的值不允许被修改。
指针是一个对象,但引用不是对象,因此存在const指针,但不存在const引用。
顶层const与底层const
顶层const表示对象为常量
底层const表示所指对象为常量
int i=0;
int *const p1 = &i; //顶层指针
const int *p2 = &i; //底层指针
拷贝时,拷入与拷出对象必须具有相同的底层const资格。但顶层const无影响。