C++での継承と友情
C ++では、友情は継承されません。つまり、1つの親クラスにいくつかのフレンド関数がある場合、子クラスはそれらをフレンドとして取得しません。
この例では、display()関数はMyBaseClassのフレンドですが、MyDerivedClassのフレンドではないため、エラーが生成されます。 display()は、MyBaseClassのプライベートメンバーにアクセスできます。
例
#include <iostream> using namespace std; class MyBaseClass { protected: int x; public: MyBaseClass() { x = 20; } friend void display(); }; class MyDerivedClass : public MyBaseClass { private: int y; public: MyDerivedClass() { x = 40; } }; void display() { MyDerivedClass derived; cout << "The value of private member of Base class is: " << derived.x << endl; cout << "The value of private member of Derived class is: " << derived.y << endl; } main() { display(); }
出力
[Error] 'int MyDerivedClass::y' is private [Error] within this context
-
C++での多重継承
多重継承は、クラスが複数の基本クラスから継承する場合に発生します。したがって、クラスは、多重継承を使用して複数の基本クラスから機能を継承できます。これは、C++などのオブジェクト指向プログラミング言語の重要な機能です。 多重継承を示す図を以下に示します- C++で多重継承を実装するプログラムは次のとおりです- 例 #include <iostream> using namespace std; class A { public: int a = 5; A() { &
-
C++でのフレンドクラスと関数
クラスのフレンド関数はそのクラスのスコープ外で定義されていますが、クラスのすべてのプライベートメンバーと保護されたメンバーにアクセスする権利があります。フレンド関数のプロトタイプはクラス定義に表示されますが、フレンドはメンバー関数ではありません。 フレンドは、関数、関数テンプレート、メンバー関数、またはクラスまたはクラステンプレートにすることができます。この場合、クラス全体とそのすべてのメンバーがフレンドになります。 関数をクラスのフレンドとして宣言するには、次のように、クラス定義の関数プロトタイプの前にキーワードfriendを付けます- class Box { double width;