フレンド関数の継承 サブクラスがフレンド関数を持つクラスを継承する場合 サブクラスはフレンド関数を継承できません。親クラスのフレンド関数は、子クラスのプライベート メンバーにアクセスできます。サブクラスのフレンド関数は、親クラスのプライベート メンバーにアクセスできません。
#フレンド関数がクラス継承に及ぼす影響
序文
フレンド Aメタ関数は、クラスのスコープ外にあるクラスのプライベート メンバーにアクセスできる特別な C 関数です。クラスの継承に関しては、フレンド関数の動作を理解することが重要です。フレンド関数と継承
フレンド関数を持つクラスをサブクラスが継承する場合、次のルールが適用されます:次のコード例を考えてみましょう:
#include <iostream> class Base { friend void print(Base& b); // 父类友元函数 private: int x; }; class Derived : public Base { friend void access(Derived& d); // 子类友元函数 private: int y; }; void print(Base& b) { std::cout << b.x << std::endl; } // 父类友元函数访问私有成员 x void access(Derived& d) { std::cout << d.x << " " << d.y << std::endl; } // 子类友元函数访问私有成员 x 和 y int main() { Base b; b.x = 10; print(b); // 输出:10 Derived d; d.x = 20; d.y = 30; access(d); // 输出:20 30 print(d); // 输出:20 }
この例では:
Parentクラスprint()
があり、#xx プライベート メンバーにアクセスできます。
サブクラス
Derived があり、親クラスのプライベート メンバー
x にアクセスできます。
サブクラス
Derived は、親クラス
Base フレンド関数
print() によってアクセスできます。ただし、親クラスのプライベート メンバー #xxx
にはアクセスできません。
以上がフレンド関数はクラスの継承にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。