Heim  >  Artikel  >  Backend-Entwicklung  >  Überladen und Überschreiben von C++-Funktionen

Überladen und Überschreiben von C++-Funktionen

王林
王林Original
2024-04-12 12:12:02877Durchsuche

Überladen und Überschreiben sind unterschiedliche Konzepte in C++. Durch Überladen kann eine Funktion mit demselben Namen und einer anderen Parameterliste erstellt werden, während durch Überschreiben eine abgeleitete Klassenfunktion eine Basisklassenfunktion mit demselben Namen überschreiben kann. Beim Überladen ist der Funktionsname derselbe, aber die Parameterliste ist unterschiedlich. Beim Überschreiben müssen der Funktionsname und die Parameterliste gleich sein und die abgeleitete Klassenfunktion muss das Schlüsselwort override verwenden. Überladen und Überschreiben von C++-Funktionen sind zwei verschiedene Konzepte in C++. Durch Überladen können Funktionen mit demselben Namen, aber unterschiedlichen Parameterlisten erstellt werden, während durch Überschreiben eine Funktion in einer abgeleiteten Klasse eine Funktion mit demselben Namen in einer Basisklasse überschreiben kann.

C++ 函数的重载和覆盖Überladungen

Angenommen, wir haben eine Funktion namens area, die die Fläche verschiedener Formen basierend auf verschiedenen Eingabeparametern berechnet:

int area(int length, int width);  // 矩形面积
double area(double radius);  // 圆形面积

Diese Funktionen überladen area Namen, da sie unterschiedliche Parameterlisten haben. Sie sind in der Lage, unterschiedliche Datentypen zu verarbeiten und unterschiedliche Berechnungen durchzuführen. <p><strong></strong>Override</p> <p></p>Angenommen, wir haben eine Basisklasse <code>Shape, die eine virtuelle Funktion area hat:

class Shape {
public:
    virtual double area() const = 0;
};
Wir können eine abgeleitete Klasse erstellen Rechteck und Kreis und überschreiben Sie die Funktion 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;  // 圆形属性
};

In der abgeleiteten Klasse überschreiben wir explizit das übergeordnete Element durch den override Schlüsselwort Die area-Funktion der Klasse. Die überschriebene Funktion muss denselben Rückgabetyp und Namen wie die übergeordnete Funktion haben.

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

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

rrreee

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

Praktischer Fall

Wir erstellen ein Programm, um Überladung und Überschreibung zu demonstrieren:

rrreee

Ausgabeergebnisse:

rrreee

Dieses Beispiel zeigt, wie Funktionen mit unterschiedlichen Funktionen durch Überladung und Überschreibung erstellt werden.

Das obige ist der detaillierte Inhalt vonÜberladen und Überschreiben von C++-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn