Durch das Umschreiben von Funktionen können Unterklassen übergeordnete Klassenfunktionen überschreiben, wodurch Fehler in übergeordneten Klassen behoben und die Codestruktur optimiert werden. Die spezifischen Schritte sind wie folgt: Die Unterklasse schreibt die Funktion mit demselben Namen und derselben Signatur wie die übergeordnete Klasse neu und stellt ihre eigene Implementierung bereit. Unterklassen können Designfehler oder Fehler in der übergeordneten Klasse korrigieren. Umschreibfunktionen können die Wartbarkeit und Lesbarkeit Ihres Codes verbessern.
C++-Funktionsumschreibung: Defekte der übergeordneten Klasse abdecken und Codestruktur optimieren
FunktionsumschreibungErmöglicht Unterklassen die Neuimplementierung von Funktionen mit demselben Namen und derselben Signatur in der übergeordneten Klasse. Dies bietet die folgenden Vorteile:
Syntax
Die Syntax zum Überschreiben einer übergeordneten Klassenfunktion in einer Unterklasse lautet wie folgt:
returnType ChildClass::functionName(argumentList) { // 重写后的函数体 }
Unter ihnen:
returnType
: Der Rückgabetyp der überschriebenen Funktion. returnType
:重写函数的返回类型。ChildClass
:派生类名称。functionName
:要重写的函数名称。argumentList
:重写函数的参数列表。实战案例:几何形状基类
考虑一个几何形状基类,它定义一个area
虚拟函数来计算形状的面积:
class Shape { public: virtual double area() const = 0; };
我们创建派生类Square
和Circle
,分别为正方形和圆形:
class Square : public Shape { public: Square(double sideLength) : sideLength(sideLength) {} double area() const override { return sideLength * sideLength; } private: double sideLength; }; class Circle : public Shape { public: Circle(double radius) : radius(radius) {} double area() const override { return M_PI * radius * radius; } private: double radius; };
覆盖父类缺陷
Shape
基类的area
函数是抽象的,因为它没有具体实现。子类必须提供自己的实现。但是,对于像Circle
这样的圆形,父类的area
函数是错误的,因为它不考虑圆周率π。
通过重写Circle
类的area
函数,我们可以覆盖父类缺陷并提供正确的面积计算:
class Circle : public Shape { public: Circle(double radius) : radius(radius) {} double area() const override { return M_PI * radius * radius; } private: double radius; };
优化代码结构
考虑另一个具有以下方法的Vector
类:
class Vector { public: void add(int x) { value += x; } void subtract(int x) { value -= x; } };
我们可以通过重写加法运算符,
ChildClass
: Abgeleiteter Klassenname. functionName
: Der Name der Funktion, die neu geschrieben werden soll. argumentList
: Schreiben Sie die Parameterliste der Funktion neu.
area
-Funktion definiert, um die Fläche der Form zu berechnen: 🎜class Vector { public: Vector& operator+=(int x) { value += x; return *this; } Vector& operator-=(int x) { value -= x; return *this; } private: int value; };
Quadrat
und Kreis
, bzw. Quadrat und Kreis: 🎜Vector v; v += 10; // 相当于 v.add(10) v -= 5; // 相当于 v.subtract(5)
Form
Bereich Die Funktion code> ist abstrakt, da sie keine konkrete Implementierung hat. Unterklassen müssen ihre eigene Implementierung bereitstellen. Für Kreise wie <code>Circle
ist die Funktion area
der übergeordneten Klasse jedoch falsch, da sie pi nicht berücksichtigt. 🎜🎜Durch Überschreiben der Funktion area
der Klasse Circle
können wir die Mängel der übergeordneten Klasse überschreiben und eine korrekte Flächenberechnung ermöglichen: 🎜rrreee🎜🎜Optimieren Sie die Codestruktur🎜🎜🎜 Betrachten Sie eine weitere Klasse A Vector
mit den folgenden Methoden: 🎜rrreee🎜Wir können diesen Code neu gestalten, indem wir die Additionsoperatoren ,
überschreiben, um die Lesbarkeit und Wartbarkeit des Codes zu verbessern. Eigenschaften: 🎜 rrreee🎜Der Überschreibungsoperator ermöglicht es uns, Vektoren mit einer prägnanteren und klareren Syntax zu bedienen: 🎜rrreee🎜🎜Fazit🎜🎜🎜Funktionsüberschreibung ist ein leistungsstarker Mechanismus in C++, der es Unterklassen ermöglicht, Fehler in übergeordneten Klassen zu überschreiben und die Codestruktur zu optimieren. Indem wir den Entwurf und die Implementierung überschriebener Funktionen sorgfältig abwägen, können wir die Robustheit, Lesbarkeit und Wartbarkeit unserer Programme verbessern. 🎜Das obige ist der detaillierte Inhalt vonUmschreiben von C++-Funktionen: Abdeckung von Fehlern der übergeordneten Klasse und Optimierung der Codestruktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!