Rumah > Artikel > pembangunan bahagian belakang > Bolehkah fungsi C++ diisytiharkan maya? Apakah peranan fungsi maya?
Fungsi maya dalam C++ membenarkan kelas terbitan mentakrifkan semula kaedah yang diwarisi daripada kelas asas untuk mencapai polimorfisme. Sintaksnya ialah: mengisytiharkan fungsi maya dengan kata kunci maya dalam kelas asas, dan mentakrifkannya semula dengan menimpa dalam kelas terbitan. Dengan memanggil fungsi maya melalui penunjuk atau rujukan, objek kelas terbitan boleh memanggil fungsi maya kelas asas. Fungsi utama fungsi maya termasuk: merealisasikan polimorfisme, menyokong pengikatan dinamik dan menyediakan abstraksi.
Fungsi Maya dalam C++
Pengenalan
Fungsi maya ialah jenis fungsi ahli khas yang membenarkan kelas terbitan mentakrifkan semula kaedah yang diwarisi daripada kelas asas. Ini membolehkan polimorfisme, iaitu objek kelas terbitan boleh dirawat dengan cara yang sama seperti objek kelas asas.
Syntax
Fungsi maya diisytiharkan dalam kelas asas, menggunakan kata kunci virtual
关键字:
class Base { public: virtual void func() { /* ... */ } };
在派生类中,可以重新定义虚函数:
class Derived : public Base { public: void func() override { /* ... */ } };
虚函数调用通过指针或引用完成,因此派生类对象可以调用父类中的虚函数:
Base* base = new Derived; base->func(); // 调用 Derived::func()
实战案例
考虑以下示例:
class Shape { public: virtual double area() const = 0; }; class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} double area() const override { return _radius * _radius * 3.14; } double _radius; }; class Square : public Shape { public: Square(double side) : _side(side) {} double area() const override { return _side * _side; } double _side; }; int main() { Shape* shapes[] = {new Circle(5), new Square(4)}; double total_area = 0; for (Shape* shape : shapes) { total_area += shape->area(); } std::cout << "Total area: " << total_area << std::endl; }
此示例中,基类 Shape
定义了一个抽象函数 area()
,派生类 Circle
和 Square
提供自己的实现。主函数创建一个 Shape
rrreee
rrreeepanggilan maya dibuat melalui penunjuk atau Rujukan telah lengkap, jadi objek kelas terbitan boleh memanggil fungsi maya dalam kelas induk: rrreee
Contoh praktikal
kawasan()
, kelas terbitan Bulatan
dan Square
menyediakan pelaksanaannya sendiri. Fungsi utama mencipta tatasusunan penunjuk Shape
yang menunjuk ke objek kelas terbitan dan mengira jumlah kawasan melalui panggilan fungsi maya. Atas ialah kandungan terperinci Bolehkah fungsi C++ diisytiharkan maya? Apakah peranan fungsi maya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!