logo

C++の継承

C++ では、継承とは、1 つのオブジェクトがその親オブジェクトのすべてのプロパティと動作を自動的に取得するプロセスです。このようにして、他のクラスで定義されている属性や動作を再利用、拡張、または変更できます。

C++では、他のクラスのメンバを継承するクラスを派生クラス、メンバを継承するクラスを基底クラスと呼びます。派生クラスは、基本クラスの特殊化されたクラスです。


C++ 継承の利点

コードの再利用性: これで、親クラスのメンバーを再利用できるようになりました。したがって、メンバーを再度定義する必要はありません。したがって、クラス内で必要なコードは少なくなります。

マックオペレーティングシステム

相続の種類

C++ は 5 種類の継承をサポートしています。

  • 単一継承
  • 多重継承
  • 階層的な継承
  • マルチレベルの継承
  • ハイブリッド継承
C++の継承

派生クラス

派生クラスは、基本クラスから派生したクラスとして定義されます。

Wordのクイックアクセスツールバー

派生クラスの構文:

|_+_|

上記の場合、派生クラスの関数は基本クラスのメソッドをオーバーライドします。したがって、display() 関数を呼び出すと、派生クラスで定義された関数が呼び出されるだけになります。基本クラス関数を呼び出したい場合は、クラス解決演算子を使用できます。

 int main() { B b; b.display(); // Calling the display() function of B class. b.B :: display(); // Calling the display() function defined in B class. } 

C++ ハイブリッド継承

ハイブリッド継承は、複数の種類の継承を組み合わせたものです。

C++の継承

簡単な例を見てみましょう。

 #include using namespace std; class A { protected: int a; public: void get_a() { std::cout &lt;&lt; &apos;Enter the value of &apos;a&apos; : &apos; &lt;&gt;a; } }; class B : public A { protected: int b; public: void get_b() { std::cout &lt;&lt; &apos;Enter the value of &apos;b&apos; : &apos; &lt;&gt;b; } }; class C { protected: int c; public: void get_c() { std::cout &lt;&lt; &apos;Enter the value of c is : &apos; &lt;&gt;c; } }; class D : public B, public C { protected: int d; public: void mul() { get_a(); get_b(); get_c(); std::cout &lt;&lt; &apos;Multiplication of a,b,c is : &apos; &lt; <a*b*c<< std::endl; } }; int main() { d d; d.mul(); return 0; < pre> <p>Output:</p> <pre> Enter the value of &apos;a&apos; : 10 Enter the value of &apos;b&apos; : 20 Enter the value of c is : 30 Multiplication of a,b,c is : 6000 </pre> <h2>C++ Hierarchical Inheritance</h2> <p>Hierarchical inheritance is defined as the process of deriving more than one class from a base class.</p> <img src="//techcodeview.com/img/c-tutorial/62/c-inheritance-7.webp" alt="C++ Inheritance"> <p> <strong>Syntax of Hierarchical inheritance:</strong> </p> <pre> class A { // body of the class A. } class B : public A { // body of class B. } class C : public A { // body of class C. } class D : public A { // body of class D. } </pre> <p>Let&apos;s see a simple example:</p> <pre> #include using namespace std; class Shape // Declaration of base class. { public: int a; int b; void get_data(int n,int m) { a= n; b = m; } }; class Rectangle : public Shape // inheriting Shape class { public: int rect_area() { int result = a*b; return result; } }; class Triangle : public Shape // inheriting Shape class { public: int triangle_area() { float result = 0.5*a*b; return result; } }; int main() { Rectangle r; Triangle t; int length,breadth,base,height; std::cout &lt;&lt; &apos;Enter the length and breadth of a rectangle: &apos; &lt;&gt;length&gt;&gt;breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout &lt;&lt; &apos;Area of the rectangle is : &apos; &lt;<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base&gt;&gt;height; t.get_data(base,height); float n = t.triangle_area(); std::cout &lt;<\\'area of the triangle is : \\' << n<<std::endl; return 0; } < pre> <p>Output:</p> <pre> Enter the length and breadth of a rectangle: 23 20 Area of the rectangle is : 460 Enter the base and height of the triangle: 2 5 Area of the triangle is : 5 </pre></\\'area></m<<></pre></a*b*c<<>

C++ の階層継承

階層継承は、基本クラスから複数のクラスを派生するプロセスとして定義されます。

C++の継承

階層継承の構文:

 class A { // body of the class A. } class B : public A { // body of class B. } class C : public A { // body of class C. } class D : public A { // body of class D. } 

簡単な例を見てみましょう。

配列リストのソートJava
 #include using namespace std; class Shape // Declaration of base class. { public: int a; int b; void get_data(int n,int m) { a= n; b = m; } }; class Rectangle : public Shape // inheriting Shape class { public: int rect_area() { int result = a*b; return result; } }; class Triangle : public Shape // inheriting Shape class { public: int triangle_area() { float result = 0.5*a*b; return result; } }; int main() { Rectangle r; Triangle t; int length,breadth,base,height; std::cout &lt;&lt; &apos;Enter the length and breadth of a rectangle: &apos; &lt;&gt;length&gt;&gt;breadth; r.get_data(length,breadth); int m = r.rect_area(); std::cout &lt;&lt; &apos;Area of the rectangle is : &apos; &lt;<m<< std::endl; std::cout << \\'enter the base and height of triangle: \\' <>base&gt;&gt;height; t.get_data(base,height); float n = t.triangle_area(); std::cout &lt;<\\'area of the triangle is : \\' << n<<std::endl; return 0; } < pre> <p>Output:</p> <pre> Enter the length and breadth of a rectangle: 23 20 Area of the rectangle is : 460 Enter the base and height of the triangle: 2 5 Area of the triangle is : 5 </pre></\\'area></m<<>