Computer >> Máy Tính >  >> Lập trình >> C ++

Kế thừa nhiều trong C ++


Đa kế thừa xảy ra khi một lớp kế thừa từ nhiều hơn một lớp cơ sở. Vì vậy, lớp có thể kế thừa các tính năng từ nhiều lớp cơ sở bằng cách sử dụng đa kế thừa. Đây là một tính năng quan trọng của các ngôn ngữ lập trình hướng đối tượng như C ++.

Dưới đây là một sơ đồ thể hiện đa kế thừa -

Kế thừa nhiều trong C ++

Một chương trình để thực hiện đa kế thừa trong C ++ được đưa ra như sau -

Ví dụ

#include <iostream>
using namespace std;

class A {
   public:
   int a = 5;
   A() {
      cout << "Constructor for class A" << endl;
   }
};
class B {
   public:
   int b = 10;
   B() {
      cout << "Constructor for class B" << endl;
   }
};
class C: public A, public B {
   public:
   int c = 20;
   C() {
      cout << "Constructor for class C" << endl;
      cout<<"Class C inherits from class A and class B" << endl;
   }
};
int main() {
   C obj;
   cout<<"a = "<< obj.a <<endl;
   cout<<"b = "<< obj.b <<endl;
   cout<<"c = "<< obj.c <<endl;
   return 0;
}

Đầu ra

Kết quả của chương trình trên được đưa ra như sau -

Constructor for class A
Constructor for class B
Constructor for class C
Class C inherits from class A and class B
a = 5
b = 10
c = 20

Trong chương trình trên, các lớp A và B được định nghĩa. Điều này được đưa ra dưới đây -

class A {
   public:
   int a = 5;
   A() {
      cout << "Constructor for class A" << endl;
   }
};
class B {
   public:
   int b = 10;
   B() {
      cout << "Constructor for class B" < endl;
   }
};

Lớp C kế thừa từ cả hai lớp A và B. Đây là một ví dụ về đa kế thừa. Định nghĩa loại C được hiển thị bên dưới -

class C: public A, public B {
   public:
   int c = 20;
   C() {
      cout << "Constructor for class C" << endl;
      cout<<"Class C inherits from class A and class B" << endl;
   }
};

Trong hàm main (), một đối tượng obj của lớp C được định nghĩa. Các hàm tạo của Lớp A, B và C được gọi tự động và nội dung của chúng được hiển thị. Khi đó giá trị của a, b và c được in ra. Đây là các thành viên dữ liệu của các lớp A, B và C tương ứng. Đoạn mã cho điều này như sau -

C obj;
cout<<"a = "<< obj.a <<endl;
cout<<"b = "<< obj.b <<endl;
cout<<"c = "<< obj.c <<endl;