キーワード this
クラス:インデックス への移動
キーワード this の特徴は次のとおりです。
- 非静的メンバ関数の呼び出し時に隠し引数として常に渡されます。
- どのような非静的メンバ関数の本体でも使用できるローカル変数です。
- 宣言する必要がなく、関数定義で明示的に参照されることはまれです。
- メンバを参照するために関数内で暗黙に使用されます。
非静的メンバ関数は、その呼び出し対象となるクラス型オブジェクトに作用します。たとえば、x がクラス X のオブジェクトで、f() が X のメンバ関数である場合、関数呼び出し x.f()
は x に作用します。
同様に、xptr が X オブジェクトのポインタの場合、関数呼び出し xptr->f()
は *xptr に作用します。しかし、f は X のどのインスタンスに作用しようとしているかをどうやって知るのでしょうか。C++ では、x のポインタ(this)を f に渡します。
たとえば x.f(y) が呼び出される場合(y はX のメンバ)、this は &x に設定され、y は this->y
(x.y と同等)に設定されます。