Cas d'application pratiques de la surcharge et de la réécriture de fonctions C++
Surcharge de fonctions
La surcharge de fonctions permet au même nom de fonction d'avoir différentes implémentations pour gérer différents types ou nombres de paramètres. Par exemple, nous pouvons créer une fonction qui imprime différents types de données :
void print(int value) { cout << value << endl; } void print(double value) { cout << value << endl; } int main() { int num = 10; double number = 12.5; print(num); // 调用 print(int) print(number); // 调用 print(double) return 0; }
Remplacements de fonctions
Les remplacements de fonctions permettent aux fonctions définies dans une classe dérivée d'avoir des implémentations différentes de celles des fonctions de la classe de base avec le même nom et les mêmes types de paramètres. . Par exemple, nous avons une classe de base Shape
qui définit une fonction de calcul de surface : Shape
,其中定义了一个计算面积的函数:
class Shape { public: virtual double getArea() = 0; // 虚拟函数声明 };
子类 Rectangle
和 Circle
覆盖了 getArea
函数并提供了自己的实现:
class Rectangle: public Shape { public: double width, height; Rectangle(double width, double height) : width(width), height(height) {} double getArea() override { return width * height; } }; class Circle: public Shape { public: double radius; Circle(double radius) : radius(radius) {} double getArea() override { return 3.14 * radius * radius; } };
实战案例
考虑以下示例,它使用函数重载和函数重写来创建一个计算形状面积的程序:
#include <iostream> using namespace std; // 基类 Shape class Shape { public: virtual double getArea() = 0; }; // 子类 Rectangle class Rectangle: public Shape { public: double width, height; Rectangle(double width, double height) : width(width), height(height) {} double getArea() override { return width * height; } }; // 子类 Circle class Circle: public Shape { public: double radius; Circle(double radius) : radius(radius) {} double getArea() override { return 3.14 * radius * radius; } }; // 函数重载用来打印不同类型数据的面积 void printArea(Shape *shape) { cout << "Area of the Shape: " << shape->getArea() << endl; } int main() { Rectangle rectangle(5, 10); Circle circle(2); printArea(&rectangle); printArea(&circle); return 0; }
在这个案例中,Shape
类定义了一个虚拟的 getArea
函数,由子类 Rectangle
和 Circle
覆盖。printArea
函数使用函数重载来处理不同类型的 Shape
rrreee
Rectangle
et Circle
remplacent getArea
et fournit sa propre implémentation : 🎜rrreee🎜🎜Un exemple pratique🎜🎜🎜Considérez l'exemple suivant, qui utilise la surcharge de fonctions et la réécriture de fonctions pour créer un programme qui calcule l'aire d'une forme : 🎜rrreee🎜 Dans ce cas, la classe Shape
définit une fonction virtuelle getArea
, qui est remplacée par les sous-classes Rectangle
et Circle
. La fonction printArea
utilise des surcharges de fonctions pour gérer différents types d'objets Shape
et imprimer leurs zones. 🎜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!