可能重複:
Why isn't the const qualifier working on pointer members on const objects?爲什麼C++不對指針數據強制執行const?
考慮具有指針構件int *a
下面的類。編譯器允許const方法constMod
,即使它修改指針數據。爲什麼編譯器不會在const方法的上下文中使指針數據爲常量?如果a
只是一個int,我們不會允許在const方法中修改它。
class ConstTest
{
public:
ConstTest(int *p): a(p) {}
void constMod() const {
++(*a);
}
int *a;
};
我在linux上使用g ++。
唯一的答案就是「因爲是這樣的」,但我想我們大多數人同意它通常是意外(起初),儘管人們可以事後找理由。 – 2011-05-10 06:33:23
C++默認給出了一個所謂的二進制位常量性 - 這意味着它可以確保對象的無單位已經改變,所以它只是檢查指針 – rank1 2014-04-30 16:02:52