常量引用或指向常量的指针,其所指对象可以是非const对象(C++)

常量引用:

常量引用即为对const的引用,其仅对引用可参与的操作做出了限定,但对于引用的对象是否为const常量并未做限定。若引用对象是const常量,那么无论通过何种方式都不允许改变对象的值;若引用对象是非常量,则允许通过其他途径改变其值。如:

int i=47;
int &r1=i;
const int &r2=i;

此时不允许对r2进行改变其值的操作,因为r2位常量引用,但可以通过改变r1或直接改变i来达到改变值的目的。

i=0;//行!
r1=0;//行!
r2=0;//不行!

——————————————————————————————————————————————————

指向常量的指针:

指向常量的指针同理

int i=47;
int *p1=&i;
const int *p2=&i;

可以通过改变*p1或i来改变值,但p2不允许这么做。

i=0;//行!
*p1=0;//行!
*p2=0;//不行!

——————————————————————————————————————————————————

可以这样理解:

所谓指向常量的指针或引用,不过是指针或引用“自以为是”罢了,它们觉得自己指向了常量,所以自觉地不去改变所指对象的值。对象的值到底能不能修改只取决于其本身。

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页