このポインタ
クラスには、非常に隠された特別なポインタがあり、それがthis ポインタです。
なぜ特別なのでしょうか?クラスが定義されている限り、システムは this という名前の現在のオブジェクトを指すポインターを事前定義するためです。目には見えませんが、使うことはできます。
たとえば、時計クラスのメンバー関数、時刻値の設定に使用されるコードを見てみましょう。
intClock::SetTime(inth,intm,ints){H=h;M=m;S=s;}
Clock クラス自体のメンバ変数は H、M、S であることがわかります。これらを区別するために、仮パラメータを小文字で定義します。したがって、これの存在がわかっている場合は、次のように書くことができます。
intClock::SetTime(inth,intm,ints){this->H=h;this->M=m;this->S=s;}//次のように書くこともできます: intClock::SetTime(inth, intm,ints ){(*this).H=h;(*this).M=m;(*this).S=s;}
上記の 2 つの書き込みメソッドは、オブジェクト内の隠された this ポインターを使用していることがわかります。これは明らかにこのクラスのメンバーである可能性があるため、このオブジェクトを外部変数から明確に区別します。実際、オブジェクトがそのメンバー関数を呼び出すとき、プログラム内にこのクラスのオブジェクトが複数存在する場合でも、そのメンバー関数に対するコードは 1 つだけであるため、どのオブジェクトがメンバー関数を呼び出すかを区別するために、コンパイラも同様に動作します。 Converts this->メンバー関数の形で使用されます。