Dalam C++, polimorfisme dicapai melalui fungsi maya dan kelas asas abstrak. Fungsi maya membenarkan fungsi kelas asas ditindih dalam kelas terbitan, manakala kelas asas abstrak mengandungi fungsi maya tulen, memaksa kelas terbitan menyediakan pelaksanaan. Ini membolehkan pengaturcaraan polimorfik dengan menggunakan penuding kelas asas untuk mengakses objek kelas terbitan dan memanggil kaedah yang sesuai berdasarkan jenis sebenar objek. . Dalam C++, kami menggunakan fungsi maya dan kelas asas abstrak untuk mencapai polimorfisme.
Fungsi Maya
Sintaks:
class Base { public: virtual void print() const; }; class Derived : public Base { public: virtual void print() const override; };
override
kata kunci menunjukkan bahawa kami mengatasi fungsi maya kelas asas. Kelas asas abstrak
Definisi: Kelas asas abstrak ialah kelas asas yang mengandungi sekurang-kurangnya satu fungsi maya tulen. Fungsi maya tulen tidak ditakrifkan dan hanya dilaksanakan oleh kelas terbitan.
Sintaks: override
关键字表明我们正在覆盖基类的虚拟函数。
定义:抽象基类是至少包含一个纯虚函数的基类。纯虚函数没有定义,仅由派生类实现。
语法:
class Base { public: virtual void f() const = 0; };
考虑一个形状层次结构,其中每个形状类都具有计算其面积的 area()
class Shape { public: virtual double area() const = 0; };
Contoh Praktikal: Hierarki Kelas BentukPertimbangkan hierarki bentuk di mana setiap kelas bentuk mempunyai kaedah kawasan()
yang mengira kawasannya.
Bentuk kelas asas:
class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return M_PI * _radius * _radius; } private: double _radius; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : _width(width), _height(height) {} double area() const override { return _width * _height; } private: double _width, _height; };
Kelas terbitan Bulatan dan Segi Empat:
int main() { Shape* s1 = new Circle(5); Shape* s2 = new Rectangle(3, 4); std::cout << "Circle area: " << s1->area() << std::endl; std::cout << "Rectangle area: " << s2->area() << std::endl; return 0; }
Circle area: 78.5398 Rectangle area: 12
Atas ialah kandungan terperinci Fungsi Maya C++ dan Kelas Asas Abstrak: Meneroka Asas Pengaturcaraan Polimorfik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!