、.)? " />
メンバー アクセス演算子のオーバーロードについて
演算子のオーバーロードは一般に簡単ですが、メンバー アクセス演算子 ->、.、-> について理解する必要があります。 などは混乱を招く可能性があります。この記事では、彼らの微妙な行動について詳しく説明し、一般的な問題への答えを提供します。
渡された引数と戻り値
operator-> 関数は引数をとらず、呼び出されたオブジェクトを返します。これにより、後続のメンバー検索が可能になります。 Operator-> 関数は、任意の引数を受け取り、返します。
参照されるメンバーの識別
演算子-> 関数は、単に含まれるオブジェクトを返すだけなので、参照される特定のメンバーを知る必要はありません。後続のメンバー検索では戻り値が使用されます。
const考慮事項
オーバーロード演算子-> には非 const バージョンが必要です。オペレーター。および . はオーバーロードできません。
サンプル コード
operator-> を示す次の例を考えてみましょう。
struct client { int a; }; struct proxy { client *target; client *operator->() const { return target; } }; void f() { client x{3}; proxy y{&x}; std::cout << x.a << y->a; // prints "33" }
このコードは、operator-> の「ドリルダウン」動作を示しています。呼び出しはメンバー検索を実行するために連鎖されます。
以上が演算子のオーバーロードはメンバー アクセス演算子 (->、.) でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。