Les fonctions virtuelles en C++ permettent aux classes dérivées de redéfinir les méthodes héritées des classes de base pour réaliser le polymorphisme. La syntaxe est la suivante : déclarez une fonction virtuelle avec le mot-clé virtual dans la classe de base et redéfinissez-la avec override dans la classe dérivée. En appelant une fonction virtuelle via un pointeur ou une référence, un objet de classe dérivée peut appeler une fonction virtuelle de classe de base. Les principales fonctions des fonctions virtuelles comprennent : la réalisation du polymorphisme, la prise en charge de la liaison dynamique et la fourniture d'abstraction.
Fonctions virtuelles en C++
Introduction
Une fonction virtuelle est un type spécial de fonction membre qui permet à une classe dérivée de redéfinir des méthodes héritées d'une classe de base. Cela permet le polymorphisme, c'est-à-dire que les objets de classe dérivés peuvent être traités de la même manière que les objets de classe de base.
Syntaxe
Les fonctions virtuelles sont déclarées dans la classe de base, à l'aide du mot-clé virtual
: 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
rrreeeLes appels de fonctions virtuelles sont effectués via pointeurs ou La référence est complète, donc l'objet de classe dérivé peut appeler la fonction virtuelle dans la classe parent : rrreee
Exemple pratique
Shape
définit une fonction d'abstraction area()
, les classes dérivées Circle
et Square
fournissent leur propre implémentation. La fonction principale crée un tableau de pointeurs Shape
pointant vers des objets de la classe dérivée et calcule la surface totale via des appels de fonction virtuelle. Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!