La surcharge et le remplacement sont des concepts différents en C++. La surcharge permet la création d'une fonction portant le même nom, avec une liste de paramètres différente, tandis que la substitution permet à une fonction de classe dérivée de remplacer une fonction de classe de base portant le même nom. En cas de surcharge, le nom de la fonction est le même mais la liste des paramètres est différente, en cas de substitution, le nom de la fonction et la liste des paramètres doivent être les mêmes et la fonction de classe dérivée doit utiliser le mot-clé override. La surcharge et le remplacement des fonctions C++ sont deux concepts différents en C++. La surcharge permet la création de fonctions portant le même nom mais des listes de paramètres différentes, tandis que la substitution permet à une fonction d'une classe dérivée de remplacer une fonction du même nom dans une classe de base.
Surcharges
Supposons que nous ayons une fonction appelée area
qui calcule l'aire de différentes formes en fonction de différents paramètres d'entrée :
int area(int length, int width); // 矩形面积 double area(double radius); // 圆形面积
area< /code> nom car ils ont des listes de paramètres différentes. Ils sont capables de traiter différents types de données et d’effectuer différents calculs. <p><strong></strong>Override</p><p></p>Maintenant, en supposant que nous ayons une classe de base <code>Shape
, qui a une fonction virtuelle area
: class Shape { public: virtual double area() const = 0; };
Rectangle
et Circle
, et remplacez la fonction area
: class Rectangle : public Shape { public: double area() const override { return length * width; } int length, width; // 矩形属性 }; class Circle : public Shape { public: double area() const override { return Math.PI * radius * radius; } double radius; // 圆形属性 };
override</code > mot clé La fonction <code>area
de la classe. La fonction remplacée doit avoir le même type de retour et le même nom que la fonction parent. area
的函数,它根据不同的输入参数计算不同形状的面积:
#include <iostream> #include <cmath> using namespace std; class Shape { public: virtual double area() const = 0; }; class Rectangle : public Shape { public: double area() const override { return length * width; } int length, width; }; class Circle : public Shape { public: double area() const override { return Math.PI * radius * radius; } double radius; }; int main() { // 创建矩形对象 Rectangle rectangle; rectangle.length = 5; rectangle.width = 3; // 创建圆形对象 Circle circle; circle.radius = 2; // 计算并输出矩形和圆形的面积 cout << "矩形面积:" << rectangle.area() << endl; cout << "圆形面积:" << circle.area() << endl; }
这些函数重载了 area
名称,因为它们有不同的参数列表。它们能够处理不同类型的数据并执行不同的计算。
覆盖
现在,假定我们有一个基类 Shape
,它有一个 area
虚拟函数:
矩形面积:15 圆形面积:12.566370614359172
我们可以创建派生类 Rectangle
和 Circle
,并覆盖 area
函数:
在派生类中,我们通过 override
关键字显式覆盖父类的 area
Nous créons un programme pour démontrer la surcharge et le remplacement :
rrreeeRésultats de sortie :
rrreeeCet exemple montre comment créer des fonctions avec différentes fonctions par surcharge et remplacement.
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!