const, 引用与指针

来源:互联网 发布:淘宝apple store知乎 编辑:程序博客网 时间:2024/05/22 07:51

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* cptrconst锁住 double* cptr, 即指针指向的为常量


指向常量的指针指向常量的引用可以看做指针/引用的自律性,不通过指针/引用来修改指向/绑定的对象。但并不能保证对象不通过其它途径被修改。

int ival = 5;          //可以修改const int &ri = ival;  //ri'承诺'不修改ivalconst 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无影响。

0 0
原创粉丝点击