Maison > développement back-end > C++ > le corps du texte

Surcharge et remplacement de fonctions C++

王林
Libérer: 2024-04-12 12:12:02
original
929 Les gens l'ont consulté

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.

C++ 函数的重载和覆盖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);  // 圆形面积
Copier après la connexion

Ces fonctions surchargent 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;
};
Copier après la connexion
Nous pouvons créer une classe dérivée 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;  // 圆形属性
};
Copier après la connexion

Dans la classe dérivée, nous remplaçons explicitement le parent via le 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;
}
Copier après la connexion

这些函数重载了 area 名称,因为它们有不同的参数列表。它们能够处理不同类型的数据并执行不同的计算。

覆盖

现在,假定我们有一个基类 Shape,它有一个 area 虚拟函数:

矩形面积:15
圆形面积:12.566370614359172
Copier après la connexion

我们可以创建派生类 RectangleCircle,并覆盖 area 函数:

rrreee

在派生类中,我们通过 override 关键字显式覆盖父类的 area

Cas pratique

Nous créons un programme pour démontrer la surcharge et le remplacement :

rrreee

Résultats de sortie :

rrreee

Cet 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal