0
メソッドが引数を持たないため、メソッドがアクセスできるだけでなく、C++クラスのインスタンスでprivateデータメンバを変更できないようにする方法を教えてください。私は、図形を描画するプログラムを書いています、と私は、このC++のクラスメソッド
void drawCircle() const;
を試してみましたが、私は、データメンバーが変わらないかどうかを判断することができませんでした。ありがとう
メソッドが引数を持たないため、メソッドがアクセスできるだけでなく、C++クラスのインスタンスでprivateデータメンバを変更できないようにする方法を教えてください。私は、図形を描画するプログラムを書いています、と私は、このC++のクラスメソッド
void drawCircle() const;
を試してみましたが、私は、データメンバーが変わらないかどうかを判断することができませんでした。ありがとう
メンバー関数const
(あなたの例のように)を宣言すると、(暗黙の)this
ポインタを介してメンバー変数は変更されません。コンパイラはこれを強制します。
class Foo
{
public:
void drawCircle() const
{
x = 5; // equivalent to this->x = 5; and this is const here
}
private:
int x;
};
もちろん、それはあなたがconstのネスを離れてキャストのようなトリックをプレイ防ぐことはできません。