Heim > Artikel > Backend-Entwicklung > Überladen und Umschreiben von C++-Funktionen sowie Entwurfsprinzipien der Klassenhierarchie
Einführung in das Überladen und Umschreiben von Funktionen Das Überladen und Umschreiben von Funktionen in C++ ermöglicht es einer Funktion mit demselben Namen, eine andere Parameterliste zu haben oder eine Funktion mit demselben Namen in einer Basisklasse zu überschreiben, um flexibleren und erweiterbareren Code zu erhalten und dabei wichtigen Prinzipien zu folgen wie SRP, LSP, DIP).
C++-Funktionsüberladung, Umschreiben und Gestaltungsprinzipien der Klassenhierarchie
Einführung
Funktionsüberladung und Umschreiben in C++ sind zwei Grundkonzepte, die für das Verständnis und den Entwurf klassenbasierter Programme von entscheidender Bedeutung sind. Durch Funktionsüberladung kann eine Funktion mit demselben Namen eine andere Parameterliste haben, während durch Funktionsüberschreibung eine Funktion in einer abgeleiteten Klasse eine Funktion mit demselben Namen in einer Basisklasse überschreiben kann. Diese Konzepte sind wichtig für die Erstellung einer flexiblen und skalierbaren Codebasis.
Funktionsüberladung
Funktionsüberladung ermöglicht die Erstellung von Funktionen mit demselben Namen, die jedoch unterschiedliche Parameterlisten akzeptieren. Dies ist nützlich, um verschiedene Arten und Mengen von Eingaben zu verarbeiten. Beispielsweise kann die folgende Funktion erstellt werden, um zwei int
oder zwei double
hinzuzufügen: int
或两个 double
:
int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; }
当编译器看到 add
函数调用时,它将匹配最合适的重载版本。
函数重写
函数重写允许派生类中的函数覆盖基类中的同名函数。这用于在子类中修改或扩展基类行为。例如,以下基类和派生类重新定义了 print
函数:
class Base { public: void print() { cout << "Base" << endl; } }; class Derived : public Base { public: void print() { cout << "Derived" << endl; } };
当调用派生类中的 print
函数时,它将覆盖基类中的同名函数,从而打印 "Derived"
。
类层次结构设计原则
在设计类层次结构时,以下原则非常重要:
函数重载和重写对于遵循这些原则至关重要。
实战案例
考虑一个图形应用程序,它需要处理不同形状的对象。可以使用基类 Shape
来表示所有形状,并使用派生类(如 Rectangle
和 Circle
class Shape { public: virtual double area() = 0; }; class Rectangle : public Shape { public: Rectangle(double width, double height) : width(width), height(height) {} virtual double area() override { return width * height; } private: double width, height; }; class Circle : public Shape { public: Circle(double radius) : radius(radius) {} virtual double area() override { return 3.14 * radius * radius; } private: double radius; };Wenn der Compiler den Funktionsaufruf
add
sieht, Es entspricht der am besten geeigneten überladenen Version.
Funktionsüberschreibung
Funktionsüberschreibung ermöglicht einer Funktion in einer abgeleiteten Klasse, eine gleichnamige Funktion in einer Basisklasse zu überschreiben. Dies wird verwendet, um das Verhalten der Basisklasse in Unterklassen zu ändern oder zu erweitern. Beispielsweise definieren die folgenden Basis- und abgeleiteten Klassen die Funktionprint
neu: rrreee
Wenn die Funktionprint
in der abgeleiteten Klasse aufgerufen wird, überschreibt sie deren Funktion name in der Basisklasse und gibt somit "Derived"
aus. 🎜🎜🎜Grundsätze für den Entwurf einer Klassenhierarchie🎜🎜🎜Beim Entwurf einer Klassenhierarchie sind die folgenden Grundsätze sehr wichtig: 🎜Shape
verwenden, um alle Formen darzustellen, und abgeleitete Klassen wie Rectangle
und Circle
, um bestimmte Formen darzustellen. 🎜rrreee🎜 Berechnen Sie die Fläche verschiedener Formen einfach mit der Funktion „Rewrite“. Durch die Befolgung der SRP-Prinzipien definiert jede Klasse ihre spezifischen Verantwortlichkeiten. 🎜🎜🎜Fazit🎜🎜🎜Funktionsüberladung und Umschreiben sind leistungsstarke Konzepte in C++ und für die Gestaltung flexiblen und skalierbaren Codes von entscheidender Bedeutung. Die Einhaltung der Designprinzipien der Klassenhierarchie stellt die Erstellung robuster und wartbarer Software sicher. 🎜Das obige ist der detaillierte Inhalt vonÜberladen und Umschreiben von C++-Funktionen sowie Entwurfsprinzipien der Klassenhierarchie. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!