Das Überschreiben von C++-Funktionen ermöglicht es Unterklassen, übergeordnete Klassenfunktionen zu überschreiben und ihre eigene spezifische Implementierung bereitzustellen. Die Unterklasse muss eine Funktion mit demselben Namen und Parametertyp wie die übergeordnete Klasse deklarieren und sie mit dem Schlüsselwort override markieren. Überschreibende Funktionen können verwendet werden, um die Funktionalität einer übergeordneten Klasse zu erweitern, eine spezifische Implementierung für eine Unterklasse bereitzustellen oder eine konkrete Implementierung einer abstrakten Funktion bereitzustellen.
Detaillierte Erklärung des C++-Funktionsumschreibens: Das Geheimnis des Überschreibens von übergeordneten Klassenfunktionen
Überblick
Funktionsumschreiben ist eine leistungsstarke Funktion in der objektorientierten C++-Programmierung, die es Unterklassen ermöglicht, Funktionen in übergeordneten Klassen neu zu definieren Die Funktion. Durch Überschreiben kann eine Unterklasse die Implementierung der übergeordneten Klasse überschreiben und ihre eigene spezifische Funktionalität bereitstellen.
Syntax
Um eine Funktion zu überschreiben, muss die Unterklasse eine Funktion mit demselben Namen und Parametertyp wie die übergeordnete Klasse deklarieren:
class Child : public Parent { public: ReturnType overrideName(ParameterList) override; };
wobei:
override
Schlüsselwort die angibt Funktion Umgeschriebene Funktionen in der übergeordneten Klasse. override
关键字表明该函数重写了父类中的函数。overrideName
是重写函数的名称。ParameterList
是重写函数的参数列表。ReturnType
是重写函数的返回类型(可以与父类函数不同)。实战案例
考虑一个形状基类 Shape
,它包含一个计算面积的函数 getArea()
。子类 Rectangle
和 Circle
分别继承 Shape
,需要提供自己的面积计算方法:
class Shape { public: virtual double getArea() = 0; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : m_width(width), m_height(height) {} double getArea() override { return m_width * m_height; } private: double m_width; double m_height; }; class Circle : public Shape { public: Circle(double radius) : m_radius(radius) {} double getArea() override { return M_PI * m_radius * m_radius; } private: double m_radius; }; int main() { Shape* shapes[] = {new Rectangle(5, 10), new Circle(3)}; for (Shape* shape : shapes) { cout << "Area: " << shape->getArea() << endl; } return 0; }
输出
Area: 50 Area: 28.2743
在这个例子中,Rectangle
和 Circle
重写了 Shape
中的 getArea()
函数,提供了各自的面积计算。父类指针指向子类对象时,重写后的函数将被调用。
使用场景
函数重写通常用于以下场景:
注意事项
override
overrideName
ist der Name der überschriebenen Funktion. ParameterList
ist die Parameterliste der überschriebenen Funktion. 🎜🎜ReturnType
ist der Rückgabetyp der überschriebenen Funktion (kann sich von der übergeordneten Klassenfunktion unterscheiden). 🎜🎜🎜🎜Praktischer Fall🎜🎜🎜Stellen Sie sich eine Formbasisklasse Shape
vor, die eine Funktion getArea()
enthält, die die Fläche berechnet. Die Unterklassen Rectangle
und Circle
erben jeweils Shape
und müssen ihre eigene Flächenberechnungsmethode bereitstellen: 🎜rrreee🎜🎜Ausgabe🎜🎜rrreee🎜In diesem Beispiel , Rectangle
und Circle
schreiben die Funktion getArea()
in Shape
um, um ihre jeweiligen Flächenberechnungen bereitzustellen. Wenn der Zeiger der übergeordneten Klasse auf das Objekt der untergeordneten Klasse zeigt, wird die überschriebene Funktion aufgerufen. 🎜🎜🎜Verwendungsszenarien🎜🎜🎜Das Umschreiben von Funktionen wird normalerweise in den folgenden Szenarien verwendet: 🎜🎜🎜Wenn die Funktion der übergeordneten Klasse erweitert oder geändert werden muss. 🎜🎜Wenn Sie verschiedenen Unterklassen spezifische Funktionen bereitstellen müssen. 🎜🎜Wenn es notwendig ist, eine konkrete Implementierung einer abstrakten Funktion (rein virtuelle Funktion) in der Basisklasse bereitzustellen. 🎜🎜🎜🎜Hinweise🎜🎜🎜🎜Die überschriebene Funktion muss dieselbe Signatur (Name, Parametertyp, Rückgabetyp) wie die übergeordnete Klassenfunktion haben. 🎜🎜Bei virtuellen Funktionen können von Unterklassen überschriebene Funktionen unterschiedliche Zugriffsmodifikatoren haben (z. B. kann eine geschützte übergeordnete Klassenfunktion als öffentliche Unterklassenfunktion überschrieben werden). 🎜🎜Eine Unterklasse kann nur nicht statische Funktionen in der übergeordneten Klasse überschreiben. 🎜🎜Überschriebene Funktionen werden normalerweise mit dem Schlüsselwort override
gekennzeichnet, dies ist jedoch nicht erforderlich. 🎜🎜Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Umschreibens von C++-Funktionen: Das Geheimnis des Überschreibens übergeordneter Klassenfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!