C では、フレンド関数は仮想関数と対話するため、フレンド関数は仮想関数にアクセスし、派生クラスのフレンド関数を呼び出して基本クラスのプライベート メンバーにアクセスできます。この対話を使用して、継承階層に隠されたデータにアクセスしたり、多態性の動作を実装したりできます。
#C フレンド関数と仮想関数の相互作用
C では、フレンド関数はクラスのプライベート関数にアクセスできるメソッドです。そして保護されたメンバー関数。仮想関数を使用すると、派生クラスが基本クラスのメソッドをオーバーライドできます。フレンド関数と仮想関数の間の対話は、次の方法で実現できます。ケース 1: フレンド関数と仮想関数が同時にアクセスされる場合
フレンド関数と仮想関数 クラスのメンバーに同時にアクセスする場合、フレンド関数がどのクラスの仮想関数にアクセスしているかを明確に指定する必要があります。class Base { public: virtual void foo() { std::cout << "Base::foo()\n"; } }; class Derived : public Base { public: virtual void foo() override { std::cout << "Derived::foo()\n"; } }; class Friend { public: static void callFoo(Base& base) { base.foo(); } // 调用 Base::foo() static void callFoo(Derived& derived) { derived.foo(); } // 调用 Derived::foo() };
ケース 2: 仮想関数でのフレンド関数呼び出し
派生クラスの仮想関数はフレンド関数を呼び出して、プライベートまたは保護された基本クラスのメンバーにアクセスできます。class Base { public: virtual void foo(); friend class Derived; }; class Derived : public Base { public: virtual void foo() override { // 调用友元函数访问 Base 的私有成员 std::cout << m_privateMember << "\n"; } private: int m_privateMember; };
実践的なケース: 非表示データへのアクセス
フレンド関数と仮想関数を組み合わせて使用すると、継承システム内の非表示データにアクセスできます。rree
以上がC++ フレンド関数と仮想関数間の相互作用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。