Fungsi maya ialah mekanisme polimorfisme yang membenarkan kelas terbitan mengatasi fungsi ahli kelas asasnya: Pengisytiharan: Tambah kata kunci maya sebelum nama fungsi. Panggilan: Menggunakan penuding atau rujukan kelas asas, pengkompil akan secara dinamik mengikat pelaksanaan yang sesuai bagi kelas terbitan. Kes praktikal: Dengan mentakrifkan kelas asas Bentuk dan kelas terbitannya Segiempat dan Bulatan, aplikasi fungsi maya dalam polimorfisme ditunjukkan untuk mengira luas dan melukis bentuk.
Fungsi maya dalam C++
Fungsi maya ialah mekanisme polimorfisme yang membenarkan kelas terbitan mengatasi fungsi ahli kelas asasnya. Ini membolehkan pengaturcara mentakrifkan gelagat biasa dalam kelas asas sambil masih membenarkan kelas terbitan menyediakan pelaksanaan khusus contoh bagi gelagat tersebut.
Mengisytiharkan fungsi maya
Untuk mengisytiharkan fungsi maya, letakkan kata kunci virtual
pada permulaan nama fungsi. Contohnya:
class Base { public: virtual void print() const; };
Panggil fungsi maya
Panggil fungsi maya, menggunakan penuding atau rujukan kelas asas. Pengkompil akan secara dinamik mengikat pelaksanaan yang sesuai bagi kelas terbitan. Contohnya:
void doSomething(Base* base) { base->print(); }
Kes praktikal
Berikut ialah contoh penggunaan fungsi maya:
#include <iostream> class Shape { public: virtual double area() const = 0; virtual void draw() const = 0; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : width_(width), height_(height) {} double area() const override { return width_ * height_; } void draw() const override { std::cout << "Drawing rectangle" << std::endl; } private: double width_; double height_; }; class Circle : public Shape { public: Circle(double radius) : radius_(radius) {} double area() const override { return 3.14 * radius_ * radius_; } void draw() const override { std::cout << "Drawing circle" << std::endl; } private: double radius_; }; int main() { Shape* rectangle = new Rectangle(5, 10); Shape* circle = new Circle(5); std::cout << rectangle->area() << std::endl; // Output: 50 std::cout << circle->area() << std::endl; // Output: 78.5 rectangle->draw(); // Output: Drawing rectangle circle->draw(); // Output: Drawing circle return 0; }
Atas ialah kandungan terperinci Bagaimana untuk mengisytiharkan dan memanggil fungsi maya dalam C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!