1. Pengenalan kepada berbilang warisan dalam C++
Dalam C++, berbilang warisan ialah ciri yang boleh diwarisi oleh satu kelas daripada berbilang kelas. Kaedah ini boleh menggabungkan ciri dan tingkah laku kelas yang berbeza ke dalam satu kelas, dengan itu mencipta kelas baharu dengan fungsi yang lebih fleksibel dan kompleks.
Kaedah warisan berbilang C++ berbeza daripada bahasa pengaturcaraan berorientasikan objek lain seperti Java dan C# C++ membenarkan satu kelas mewarisi berbilang kelas pada masa yang sama, manakala Java dan C# hanya boleh melaksanakan warisan tunggal. Tepat kerana warisan berbilang mempunyai keupayaan pengaturcaraan yang lebih berkuasa, warisan berbilang telah digunakan secara meluas dalam pengaturcaraan C++.
2. Cara melaksanakan pewarisan berbilang dalam C++
Pewarisan berbilang dalam C++ dilaksanakan dengan memasukkan berbilang kelas asas dalam definisi kelas. Dalam proses pelaksanaan khusus, kita boleh melaksanakan warisan berbilang dalam dua cara berikut:
1. Kaedah warisan maya
Dalam C++, warisan maya ialah cara untuk menetapkan kelas asas sebagai kelas asas maya. Kelas asas warisan maya tidak akan mengalami masalah warisan berbilang apabila kelas terbitan mewarisi, dan mengelakkan masalah ahli yang sama muncul dalam berbilang kelas asas.
2. Kaedah pewarisan terus
Selain pewarisan maya, pewarisan berbilang dalam C++ juga boleh menggunakan pewarisan langsung. Berbanding dengan warisan maya, kaedah ini tidak memerlukan kelas asas maya untuk diwarisi secara langsung oleh kelas terbitan, yang agak mudah.
3. Contoh pewarisan berbilang dalam C++
Dalam contoh berikut, kami akan melaksanakan pewarisan berbilang melalui pewarisan langsung.
Tentukan tiga kelas asas: Bentuk, Bulatan dan Segitiga, dengan Bentuk sebagai kelas asas dan Bulatan dan Segitiga mewarisi daripada Bentuk.
class Shape { public: virtual double getArea() { return 0; } }; class Circle : public Shape { public: Circle(double r) { radius = r; } double getArea() { return 3.14 * radius * radius; } private: double radius; }; class Triangle : public Shape { public: Triangle(double a, double b, double c) { sideA = a; sideB = b; sideC = c; } double getArea() { double p = (sideA + sideB + sideC) / 2; return sqrt(p * (p - sideA) * (p - sideB) * (p - sideC)); } private: double sideA; double sideB; double sideC; };
Seterusnya, kami akan mentakrifkan Graf kelas terbitan dan mewarisi kedua-dua kelas Bulatan dan Segitiga, dengan itu mencapai berbilang warisan.
class Graph : public Circle, public Triangle { public: Graph(double r, double a, double b, double c) : Circle(r), Triangle(a, b, c) {} double getArea() { return Circle::getArea() + Triangle::getArea(); } };
Dalam kod di atas, kami mewarisi kedua-dua kelas Bulatan dan Segitiga melalui pewarisan langsung, dan melebihkan kaedah getArea() Dengan memanggil kaedah getArea() kelas Bulatan dan Segitiga, akhirnya kami mengira Cari jumlah luas graf tersebut.
Akhir sekali, kita boleh menjalankan ujian berikut:
int main() { Circle c(5); cout << "圆的面积: " << c.getArea() << endl; Triangle t(3, 4, 5); cout << "三角形的面积: " << t.getArea() << endl; Graph g(5, 3, 4, 5); cout << "圆和三角形的总面积: " << g.getArea() << endl; return 0; }
Melalui ujian di atas, kita dapat melihat bahawa melalui pewarisan berbilang, kita bukan sahaja boleh mencapai kelas dengan ciri berbilang kelas pada masa yang sama, tetapi juga mencipta ciptaan oleh menggabungkan ciri-ciri yang berbeza Cipta kelas baharu yang lebih fleksibel dan kompleks.
Ringkasan
Di atas adalah pengenalan kepada kaedah pelaksanaan dan contoh pewarisan berbilang C++. Dalam pengaturcaraan sebenar, walaupun warisan berbilang boleh membawa keupayaan pengaturcaraan yang lebih fleksibel dan berkuasa, ia juga memerlukan kita untuk mengekalkan berhati-hati dan pemikiran yang jelas untuk mengelakkan konflik antara kelas.
Atas ialah kandungan terperinci Kaedah pelaksanaan dan contoh pelbagai warisan dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!