const, 引用与指针

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'承诺'不修改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无影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值