Heim > Artikel > Backend-Entwicklung > Überladen und Überschreiben von C++-Funktionen
Ü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.
Ü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
我们可以创建派生类 Rectangle
和 Circle
,并覆盖 area
函数:
在派生类中,我们通过 override
关键字显式覆盖父类的 area
Wir erstellen ein Programm, um Überladung und Überschreibung zu demonstrieren:
rrreeeAusgabeergebnisse:
rrreeeDieses 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!