this
カテゴリ
例
class X { int a; public: X (int b) {this -> a = b;} };
説明
メンバ関数が static ではない場合、this キーワードは、呼び出された関数のオブジェクトへのポインタになります。 static ではないメンバ関数の呼び出しには、this が隠れた引数として渡されます。
this は static 以外のメンバ関数内で使用できるローカル変数です。 メンバを参照するために、関数内で暗黙に使用されます。 this は宣言が不要で、関数定義で明示的に参照されることはまれです。
たとえば、x.func(y) の呼び出しがあるとします。 この場合、y は X のメンバで、this キーワードは &x に設定されます。 ここで、y は this->y となり、x.y と等しくなります。
static のメンバ関数には、特定のオブジェクトを使用せずに呼び出されるため、this ポインタはありません。 従って、static のメンバ関数は、オブジェクトが . または -> で明示的に指定されていない限り、static ではないメンバにアクセスできません。