Fungsi maya dan warisan membolehkan polimorfisme dalam pengaturcaraan berorientasikan objek: Mengisytiharkan fungsi maya membenarkan kelas terbitan untuk mengatasi kaedah kelas asas dan memanggilnya berdasarkan jenis masa jalan objek. Warisan menetapkan hierarki kelas, dan kelas terbitan boleh mengakses dan melanjutkan data dan kaedah kelas asas. Warisan polimorfik membenarkan kelas terbitan untuk mewarisi daripada berbilang kelas asas, dan kebanyakan objek terbitan boleh menggunakan fungsi maya semua kelas asas. Urutan di mana fungsi maya dipanggil bergantung pada susunan di mana kelas diisytiharkan.
Dalam pengaturcaraan berorientasikan objek, fungsi maya dan pewarisan adalah elemen utama polimorfisme. Fungsi maya membenarkan kelas terbitan untuk mengatasi kaedah kelas asas dan memanggil pelaksanaan yang betul pada masa jalan. Warisan mewujudkan hubungan hierarki antara kelas supaya kelas terbitan boleh mengakses dan melanjutkan data dan kaedah dalam kelas asas. Artikel ini akan menyelidiki mekanisme fungsi maya dan warisan dalam C++ dan menggambarkannya melalui kes praktikal.
Fungsi maya ialah fungsi ahli yang diisytiharkan sebagai virtual
。当从派生类调用虚拟函数时,将根据对象的实际运行时类型调用该函数的正确实现。
声明虚拟函数:
class Base { public: virtual void display() { cout << "Base class display" << endl; } };
重写派生类中的虚拟函数:
class Derived : public Base { public: virtual void display() { // 重写 display 方法 cout << "Derived class display" << endl; } };
继承允许派生类从基类继承数据和方法。
继承语法:
class Derived : public Base { // 派生类声明 };
派生类可以访问和使用基类中的所有非私有成员,包括虚拟函数。它也可以在派生类中重写基类的虚拟函数。
多态继承:当一个派生类从多个基类继承时。
在多态继承中,最派生类的对象可以访问和使用所有基类的虚拟函数。跨多个继承层次调用的顺序取决于类的声明顺序。
实战案例:
考虑以下代码,展示了多态继承的使用:
#include <iostream> using namespace std; class Shape { public: virtual void draw() { cout << "Drawing shape" << endl; } }; class Circle : public Shape { public: virtual void draw() { cout << "Drawing circle" << endl; } }; class Square : public Shape { public: virtual void draw() { cout << "Drawing square" << endl; } }; int main() { Shape* shapes[] = { new Circle(), new Square() }; for (Shape* shape : shapes) { shape->draw(); } return 0; }
输出:
Drawing circle Drawing square
在该例中,Circle
和 Square
类从基类 Shape
继承了 draw
虚拟函数。当调用 draw
Square
mewarisi fungsi maya draw
daripada kelas asas Shape
. Apabila fungsi draw
dipanggil, ia memanggil pelaksanaan yang sesuai berdasarkan jenis objek sebenar. Ini menunjukkan cara pewarisan polimorfik membenarkan kelas terbitan untuk mengatasi fungsi maya yang diwarisi daripada kelas asas dan menyediakan pelaksanaan khusus objek yang betul pada masa jalan. 🎜Atas ialah kandungan terperinci Fungsi dan Warisan Maya C++: Memahami Misteri Pewarisan Polimorfik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!