朋友一個問題引發了我一連串的思考.

const int& ri = i; //ok,引用不區分類型
ri++; //error, ri為常量,不可變
i++; //ok,=右邊的變量與引用無關
ri=b; //error, ri為常量
i=j; //ok,=右邊的變量與引用無關
int & const ri = i; //error,不存在這種形式,沒有意義
他問我為甚麼ri++會出現編譯錯誤,而i++卻不會.ri,i不都指向同一塊內存區域嗎?
其實我們在IDE中看到的ri, i 這些變量,編譯器都是把它們做為一種標記或者說是索引來使用的.它們並不直接代表某個內存單元,僅僅作為一種操作符來使用.關鍵字const前綴說明這個變量對分配給它的內存單元唯有只讀的權限,而不是說它的內存空間操作系統不允許寫.你可以使用const_cast < type-id >這個操作符來修改const變量的訪問權限,那塊內存空間對你又是可寫的了!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值