常量引用:
常量引用即为对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;//不行!
——————————————————————————————————————————————————
可以这样理解:
所谓指向常量的指针或引用,不过是指针或引用“自以为是”罢了,它们觉得自己指向了常量,所以自觉地不去改变所指对象的值。对象的值到底能不能修改只取决于其本身。