C++ において、メンバ関数のオーバーロード解決を行う際にコンパイラが使用する、ソースコード上には直接現れない仮引数のことです。
メンバ関数が呼び出されるとき、呼び出し元となったオブジェクトが、そのメンバ関数の隠れた第1仮引数として扱われます。
たとえば、あるクラス C のオブジェクト obj があるとして、obj.func(a, b) というメンバ関数の呼び出しがあった場合、コンパイラは func(obj, a, b) として解釈します。ここで第1引数となった obj が暗黙のオブジェクト仮引数です。この型は C& のように参照型となります。また、メンバ関数が CV修飾子や参照修飾子が付加されている場合には、その種類に応じて const C&(const参照)や volatile C&、C&&(rvalueリファレンス)にも変化します。このような型の変化により、メンバ関数のオーバーロード解決が正しく行われるようになっています。
メンバ関数が静的でない場合には thisポインタが暗黙的に渡されており、これも呼び出し元のオブジェクトを指しています。thisポインタの型は C* const ですが、メンバ関数の CV修飾子によって、const C* const や volatile C* cconst に変化します。
Programming Place Plus のトップページへ
| はてなブックマーク に保存 | Facebook でシェア | X で ポスト/フォロー |
| LINE で送る | noteで書く |
|
| 管理者情報 | プライバシーポリシー |