ホームページ > バックエンド開発 > C++ > 演算子のオーバーロードはメンバー アクセス演算子 (->、.) でどのように機能しますか?

演算子のオーバーロードはメンバー アクセス演算子 (->、.) でどのように機能しますか?

Patricia Arquette
リリース: 2024-12-03 07:28:10
オリジナル
729 人が閲覧しました

How Does Operator Overloading Work with Member Access Operators (->、.)?
、.)? " />

メンバー アクセス演算子のオーバーロードについて

演算子のオーバーロードは一般に簡単ですが、メンバー アクセス演算子 ->、.、-> について理解する必要があります。 などは混乱を招く可能性があります。この記事では、彼らの微妙な行動について詳しく説明し、一般的な問題への答えを提供します。

渡された引数と戻り値

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート