Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การสืบทอดหลายรายการใน C++


การสืบทอดหลายรายการเกิดขึ้นเมื่อคลาสสืบทอดจากคลาสฐานมากกว่าหนึ่งคลาส ดังนั้นคลาสจึงสามารถสืบทอดคุณสมบัติจากคลาสพื้นฐานหลายคลาสโดยใช้การสืบทอดหลายรายการ นี่เป็นคุณสมบัติที่สำคัญของภาษาการเขียนโปรแกรมเชิงวัตถุ เช่น C++

แผนภาพที่แสดงการสืบทอดหลายรายการได้รับด้านล่าง -

การสืบทอดหลายรายการใน C++

โปรแกรมที่จะใช้การสืบทอดหลายรายการใน C ++ ได้รับดังนี้ -

ตัวอย่าง

#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;
}

ผลลัพธ์

ผลลัพธ์ของโปรแกรมข้างต้นมีดังต่อไปนี้ −

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

ในโปรแกรมข้างต้น มีการกำหนดคลาส A และ B ด้านล่างนี้ −

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;
   }
};

คลาส C สืบทอดมาจากทั้งคลาส A และ B ซึ่งเป็นตัวอย่างของการสืบทอดหลายรายการ คำจำกัดความของคลาส C แสดงอยู่ด้านล่าง -

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;
   }
};

ในฟังก์ชัน main() จะมีการกำหนดวัตถุ obj ของคลาส C ตัวสร้างของคลาส A, B และ C จะถูกเรียกโดยอัตโนมัติและเนื้อหาจะแสดงขึ้น จากนั้นพิมพ์ค่า a, b และ c เหล่านี้เป็นสมาชิกข้อมูลของคลาส A, B และ C ตามลำดับ ข้อมูลโค้ดสำหรับสิ่งนี้มีดังนี้ −

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