如果之前詢問過,我表示歉意。我的搜索結果沒有提出類似的問題。訪問靜態變量的Const方法
這是一個概念性問題。據MSDN和其他人也:
常量成員函數不能修改任何數據成員或調用不恆定的任何成員函數
我們爲什麼然後被允許訪問的靜態成員變量一個const方法?
如果之前詢問過,我表示歉意。我的搜索結果沒有提出類似的問題。訪問靜態變量的Const方法
這是一個概念性問題。據MSDN和其他人也:
常量成員函數不能修改任何數據成員或調用不恆定的任何成員函數
我們爲什麼然後被允許訪問的靜態成員變量一個const方法?
C++標準說,這大約const
成員函數:
如果該成員函數被聲明
const
,這種類型是const X*
,[...]在
const
成員函數,通過const
訪問路徑訪問調用該函數的對象;因此,const
成員函數不得修改該對象及其非靜態數據成員。
所以你看到只有非靜態數據成員是成員函數的'常量'的一部分。
但是,我認爲,更重要的是它表明一個很好的方式,以瞭解發生了什麼事情與const
成員函數是,它使得隱含this
指針的指針const
。
由於靜態成員不需要通過this
指針訪問(隱式或顯式),因此對它們的訪問不是const
限定的。
非常感謝您的回覆。經過一番思考,我決定檢查你的答案是正確的,因爲它更詳細地解釋了,沒有任何疑問,尤其是部分:_「..瞭解正在發生什麼的好方法...」 – Samaursa 2010-11-23 00:05:55
如果你只是讀取成員變量,那麼你沒有改變它們,不違反const要求嗎? – Jay 2010-11-15 19:01:52
@Jay我可以改變它,不只是讀它 – Samaursa 2010-11-15 19:48:11