Heim > Artikel > Backend-Entwicklung > So unterscheiden Sie Funktionsüberladung und Umschreiben in C++
Funktionsüberladung ermöglicht Funktionen mit demselben Namen, aber unterschiedlichen Signaturen in einer Klasse, während Funktionsüberschreibungen in einer abgeleiteten Klasse auftreten, wenn sie eine Funktion mit derselben Signatur in der Basisklasse überschreiben, was zu unterschiedlichem Verhalten führt. Der Unterschied zwischen Funktionsüberladung und Umschreiben in C++ ist unterschiedlich.
Syntax:
return_type function_name(parameter_types) { // 函数体 } // 另一个重载 return_type function_name(other_parameter_types) { // 另一个函数体 }Praktisches Beispiel:
Stellen Sie sich eine Klasse namens AreaCalculator
vor, die die Fläche verschiedener Formen berechnet:
class AreaCalculator { public: double Area(double radius) { return M_PI * radius * radius; } double Area(double length, double width) { return length * width; } double Area(int numOfSides, double sideLength) { // 正多边形的面积公式 // ... 省略后面代码 } };Hier
Area
Code> Die Funktion ist überladen, um unterschiedliche Anzahlen und Arten von Argumenten zu akzeptieren, sodass unterschiedliche Flächen basierend auf dem Formtyp berechnet werden können.
Funktionsüberschreibung
Funktionsüberschreibung tritt in einer abgeleiteten Klasse auf, wenn sie eine Funktion in der Basisklasse mit derselben Signatur (Name und Parametertypen) überschreibt. Überschriebene Funktionen in abgeleiteten Klassen verhalten sich oft anders als Funktionen in Basisklassen.Syntax:
class DerivedClass : public BaseClass { public: // 重写基类中的函数 return_type function_name(parameter_types) { // 重写的函数体 } };
AreaCalculator
的类,它计算不同形状的面积:class Shape { public: virtual void Draw() { // 绘制通用形状 // ... 省略后面代码 } };
在这里,Area
函数被重载以接收不同数量和类型的参数,允许根据形状类型计算不同的面积。
函数重写
函数重写发生在派生类中,当它覆盖基类中具有相同签名(名称和参数类型)的函数时。派生类中的重写函数的行为通常不同于基类中的函数。
语法:
class Circle : public Shape { public: void Draw() override { // 绘制圆形 // ... 省略后面代码 } };
实战案例:
考虑一个名为 Shape
的基类,它定义了一个 Draw
函数来绘制形状:
派生类 Circle
可以重写 Draw
函数来专门绘制圆形:
通过重写,Circle
类的 Draw
函数将覆盖 Shape
类中的 Draw
Shape
, die eine Draw
-Funktion zum Zeichnen von Formen definiert: 🎜 rrreee🎜The Die abgeleitete Klasse Circle
kann die Funktion Draw
überschreiben, um gezielt Kreise zu zeichnen: Die Funktion code> überschreibt die Funktion Draw
in der Klasse Shape
und bietet eine spezifischere Zeichnungsimplementierung. 🎜Das obige ist der detaillierte Inhalt vonSo unterscheiden Sie Funktionsüberladung und Umschreiben in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!