ホームページ  >  記事  >  バックエンド開発  >  C のクラスで定義されたフレンド関数にアクセスするにはどうすればよいですか?

C のクラスで定義されたフレンド関数にアクセスするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 22:22:02348ブラウズ

How to Access Friend Functions Defined in a Class in C  ?

クラスで定義されたフレンド関数にアクセスする

C では、フレンド関数はクラス内で宣言されますが、クラスのプライベート メンバーや保護されたメンバーにアクセスできます。次のコード スニペットを考えてみましょう。

<code class="cpp">class A {
    friend void fun(A a);
    friend void fun2();
    friend void fun3();
};

void fun3() {
    std::cout << "I'm here3" << std::endl;
}</code>

fun(A) 関数へのアクセスは、この関数にはタイプ A のパラメータがあり、引数依存の検索でそれを見つけることができるため、正常に機能します。ただし、グローバル関数 fun2() および fun3() へのアクセスには問題があります。

クラス内で fun2 を宣言すると、それがフレンド関数になりますが、グローバル スコープでは宣言されません。したがって、クラス外で fun2() にアクセスする場合は次のようになります。

  • fun2();
  • A::fun2();

これを解決するための正しいアプローチは、クラスの外ですべてのフレンド関数を定義し、それらをクラスの明示的なフレンドにすることです。

<code class="cpp">class A {
    friend void fun(A a);
    friend void fun2();
    friend void fun3();
};

void fun(A a) { std::cout << "I'm here" << std::endl; }
void fun2() { std::cout << "I'm here2" << std::endl; }
void fun3();</code>

定義このようにして、フレンド関数を使用すると、クラス内外の両方でフレンド関数にアクセスできるようになります。

以上がC のクラスで定義されたフレンド関数にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。