Cplusplus-class-member-access-operator-overloading
提供:Dev Guides
クラスメンバーアクセス演算子(→)C ++でのオーバーロード
クラスメンバーアクセス演算子(→)はオーバーロードできますが、少し注意が必要です。 クラス型に「ポインタのような」動作を与えるように定義されています。 演算子→はメンバー関数でなければなりません。 使用する場合、戻り値の型はポインターまたは適用可能なクラスのオブジェクトでなければなりません。
operator→は、「スマートポインター」を実装するために、ポインター参照解除演算子*と組み合わせてよく使用されます。これらのポインターは、通常のポインターのように動作するオブジェクトです。ただし、ポインターが破棄されるか、ポインターが別のオブジェクトを指すために使用される場合のオブジェクトの自動削除など、オブジェクトにアクセスすると他のタスクを実行します。
間接参照演算子→は、単項後置演算子として定義できます。 つまり、クラスが与えられた-
クラス Ptr のオブジェクトを使用して、ポインターが使用される方法と非常によく似た方法でクラス X のメンバーにアクセスできます。 たとえば-
ステートメントp→ mは(p.operator→())→ mとして解釈されます。 同じ概念を使用して、クラスアクセス演算子→をオーバーロードする方法を次の例で説明します。
上記のコードをコンパイルして実行すると、次の結果が生成されます-