引数の一致とこのポインター
クラス メンバー関数は static として宣言されているかどうかによって異なります。静的関数に this のポインターを指定する暗黙的な引数があるため静的関数が静的関数は 1 個以上の引数があると見なされます ; それ以外の場合は同じように宣言されています。
これらの非静的メンバー関数が暗黙的な this の関数と一致するオブジェクトの種類またはオーバーロードされた演算子にはを最初の引数に一致する演算子が適用されているオブジェクト必要とする必要があります。(オーバーロードされた演算子の詳細についてはオーバーロードされた演算子 を参照してください)。
オーバーロードされた関数の引数とは異なり一時的なオブジェクトがもたらされないしthis の引数に一致するようにすると変換は実行されません。
メンバー関数にアクセスする – > のメンバー選択演算子が使用されている場合 this の引数に class-name * const の型があります。メンバーが const または volatile として宣言されている場合型は const class-name* const と volatile class-name * constそれぞれです。
. のメンバー選択演算子は同じ方法でまったく同じように動作しますが& の暗黙のアドレス () 演算子はオブジェクト名がプレフィックスとして付けられます。この方法のしくみを次の例に示します :
// Expression encountered in code
obj.name
// How the compiler treats it
(&obj)->name
– >* と .* (メンバーへのポインター) 演算子の左側のオペランドは . と – > メンバー選択演算子 () の引数との一致に関して同じ方法で処理されます。