C++ フレンド関数はどの型メンバーにアクセスできますか?

王林
リリース: 2024-04-15 17:09:01
オリジナル
900 人が閲覧しました

C では、フレンド関数はクラスのすべてのパブリック、プロテクト、プライベート メンバーにアクセスできますが、プライベート メンバーへのアクセスは制限されており、クラスのメンバー関数が呼び出された場合にのみアクセスできます。

C++ 友元函数能访问哪些类型成员?

#C フレンド関数はどの型のメンバーにアクセスできますか?

フレンド機能とは何ですか?

フレンド関数は、クラスのプライベート メンバーと保護されたメンバーにアクセスできる C の特別な関数です。フレンド関数はクラス定義の外で宣言する必要があります。

フレンド関数がアクセスできる型メンバー

フレンド関数は次の型メンバーにアクセスできます:

  • パブリック メンバー: Friend 関数は、クラスのすべてのパブリック メンバーにアクセスできます。
  • 保護されたメンバー: Friend 関数は、クラスのすべての保護されたメンバーにアクセスできます。
  • プライベート メンバー: フレンド関数はクラスのプライベート メンバーにアクセスできますが、それはフレンド関数がクラスのメンバー関数によって呼び出された場合に限られます。

実践的なケース

次のコードを考えてみましょう:

class MyClass {
private:
    int m_num;

public:
    MyClass(int num) : m_num(num) {}

    friend void print_num(MyClass& obj) {
        std::cout << obj.m_num << std::endl;
    }
};

int main() {
    MyClass obj(42);
    print_num(obj);  // 友元函数访问私有成员
    return 0;
}
ログイン後にコピー

出力結果:

42
ログイン後にコピー

この例では、print_num ()内はMyClassのフレンド機能です。 MyClass のメンバー関数ではない場合でも、プライベート メンバー m_num にアクセスできます。

アクセス制限

プライベートメンバーに対するフレンド機能のアクセスは制限されていることに注意してください。フレンド関数は、クラスのメンバー関数が呼び出された場合にのみプライベート メンバーにアクセスできます。つまり、フレンド機能は外部からプライベートメンバーに直接アクセスすることはできません。

以上がC++ フレンド関数はどの型メンバーにアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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