Warisan fungsi membolehkan kelas terbitan mewarisi dan menggunakan semula fungsi kelas asas. Dengan menggunakan fungsi maya, penggunaan semula kod boleh dicapai, di mana kelas terbitan boleh mengatasi fungsi dengan nama yang sama kelas asas dan secara dinamik melaksanakan versi fungsi yang berbeza berdasarkan jenis objek panggilan.
Penjelasan terperinci pewarisan fungsi C++: cara menggunakan fungsi maya untuk mencapai penggunaan semula kod
Pengenalan
Pewarisan fungsi ialah teknologi penting dalam pengaturcaraan berorientasikan objek (OritvedOP) yang membenarkan pengaturcaraan berorientasikan objek dan guna semula fungsi kelas asas. Dengan menggunakan fungsi maya, penggunaan semula kod yang lebih fleksibel dan berskala boleh dicapai.
Apakah fungsi maya?
Fungsi maya ialah fungsi ahli khas yang membenarkan kelas terbitan mengatasi fungsi nama yang sama bagi kelas asas. Apabila fungsi maya dipanggil, versi fungsi sebenar yang dilaksanakan ditentukan secara dinamik berdasarkan jenis objek panggilan.
Syntax
Fungsi maya diisytiharkan menggunakan kata kunci virtual
进行声明,例如:
class Base { public: virtual void print() const; // 虚函数 };
代码复用
通过使用虚函数,我们可以实现代码复用。例如,假设我们有一个基类 Shape
,它包含一个 draw()
函数:
class Shape { public: virtual void draw() const; };
我们可以从 Shape
派生出不同的形状类,例如 Circle
和 Rectangle
,并为每个形状实现自己的 draw()
函数:
class Circle : public Shape { public: void draw() const override; }; class Rectangle : public Shape { public: void draw() const override; };
当我们创建 Circle
和 Rectangle
对象并调用它们的 draw()
函数时,将执行相应的派生类函数,从而实现不同的绘制行为。
实战案例
考虑以下代码片段,它演示了如何使用虚函数来实现代码复用:
#include <iostream> using namespace std; class Shape { public: virtual void draw() const { cout << "Drawing a generic shape" << endl; } }; class Circle : public Shape { public: void draw() const override { cout << "Drawing a circle" << endl; } }; class Rectangle : public Shape { public: void draw() const override { cout << "Drawing a rectangle" << endl; } }; int main() { Shape* shapes[] = {new Circle(), new Rectangle()}; for (int i = 0; i < 2; i++) { shapes[i]->draw(); } return 0; }
运行这段代码将打印以下输出:
Drawing a circle Drawing a rectangle
在这个案例中,Shape
类是基类,它包含虚函数 draw()
。Circle
和 Rectangle
是派生类,它们重写了 draw()
函数以提供特定于形状的绘制行为。通过使用虚函数,我们可以轻松地调用不同形状的 draw()
rrreee
Shape
yang mengandungi fungsi draw()
: 🎜rrreee🎜 Kita boleh memperoleh kelas Shape yang berbeza, seperti Circle code> dan <code>Rectangle
, dan melaksanakan fungsi draw()
nya sendiri untuk setiap bentuk: 🎜rrreee🎜Apabila kita mencipta Circle
dan Rectangle
objek dan panggil fungsi draw()
mereka, fungsi kelas terbitan yang sepadan akan dilaksanakan untuk mencapai gelagat lukisan yang berbeza. 🎜🎜🎜Kes Praktikal🎜🎜🎜Pertimbangkan coretan kod berikut, yang menunjukkan cara menggunakan fungsi maya untuk mencapai penggunaan semula kod: 🎜rrreee🎜Menjalankan kod ini akan mencetak output berikut: 🎜rrreee🎜>Dalam kes ini, draw()
. Bulatan
dan Rectangle
ialah kelas terbitan yang mengatasi fungsi draw()
untuk menyediakan tingkah laku lukisan khusus bentuk. Dengan menggunakan fungsi maya, kita boleh dengan mudah memanggil fungsi draw()
pelbagai bentuk tanpa mengetahui jenis khusus mereka. 🎜Atas ialah kandungan terperinci Penjelasan terperinci tentang warisan fungsi C++: Bagaimana untuk menggunakan fungsi maya untuk mencapai penggunaan semula kod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!