常量引用或指向常量的指標,其所指物件可以是非const物件(C++)

一心Ivan發表於2020-10-31
常量引用:

常量引用即為對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;//不行!

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

可以這樣理解:

所謂指向常量的指標或引用,不過是指標或引用“自以為是”罷了,它們覺得自己指向了常量,所以自覺地不去改變所指物件的值。物件的值到底能不能修改只取決於其本身。

相關文章