La surcharge permet de définir des fonctions portant le même nom pour optimiser les performances, et différents paramètres déclenchent différentes implémentations. Une classe abstraite Shape est définie pour différentes formes (rectangle, cercle), et la méthode Area() est surchargée à l'aide des sous-classes Rectangle et Circle pour appeler automatiquement l'implémentation correcte via le type de forme afin d'éviter les calculs redondants.
Surcharge de fonctions C++ : Comment utiliser la surcharge pour optimiser les performances
Introduction
La surcharge fait référence à la définition de plusieurs fonctions avec le même nom mais des paramètres différents dans la même classe. Il permet d'appeler différentes implémentations de fonctions en fonction de différents paramètres, optimisant ainsi les performances du programme.
Grammaire
returnType functionName(参数列表1); returnType functionName(参数列表2);
Cas pratique
Objectif : Calculer l'aire de différentes formes
Mise en œuvre :
class Shape { public: virtual double area() = 0; // 抽象方法 }; class Rectangle : public Shape { public: Rectangle(double width, double height) : _width(width), _height(height) {} virtual double area() override { return _width * _height; } private: double _width; double _height; }; class Circle : public Shape { public: Circle(double radius) : _radius(radius) {} virtual double area() override { return M_PI * _radius * _radius; } private: double _radius; }; int main() { Shape* rectangle = new Rectangle(10, 5); Shape* circle = new Circle(5); cout << "Rectangle area: " << rectangle->area() << endl; cout << "Circle area: " << circle->area() << endl; delete rectangle; delete circle; return 0; }
Principe
En héritant de différentes formes d'une classe abstraiteShape
,我们可以利用重载为每个形状定义特定的 area()
方法。这样,当调用 Shape::area()
lorsque , L'implémentation correcte est appelée en fonction du type de forme réel, évitant ainsi les calculs redondants.
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!