私は C++ を勉強していて、次のことを読みました:データ メンバーが変更可能であると宣言されている場合、const メンバー関数からこのデータ メンバーに値を代入することは合法です。 しかし、次のコードは、gcc によるエラーや警告なしでコンパイルされました。(これは実際のコード例ではありません。mutable キーワードをテストするために書いただけです)
class M
{
public:
M(){x=10;};
int getX() {x++; return x;};
private:
mutable int x;
};
int main()
{
M xx;
std::cout << xx.getX() << std::endl;
}
getX を const として宣言するべきではありませんか?
編集 1 (ForEver の回答は物事をより明確にします)、次のコードはコンパイルされません。
class M
{
public:
M(){x=10;};
int getX() const {x++; return x;};
private:
int x;
};
int main()
{
M xx;
std::cout << xx.getX() << std::endl;
}