In C++ wird Vererbung verwendet, um „Ist-ein“-Beziehungen herzustellen und die Schnittstellenkonsistenz durchzusetzen. Und Komposition wird verwendet, um „Enthält-Eins“-Beziehungen herzustellen und so Flexibilität zu schaffen. Vererbung: Wird verwendet, wenn die Unterklasse eine „ist eine“-Beziehung zur Basisklasse hat, z. B. Fahrzeug und Auto. Kombination: Wird verwendet, wenn die Containerklasse und die Komponentenklasse eine „enthält-eins“-Beziehung haben. Beispielsweise enthalten die Charaktere im Spiel Waffen-, Verteidigungs- und Gesundheitswerte.
Vererbung und Komposition in C++: Wann sollte man es verwenden?
In C++ sind Vererbung und Komposition zwei Techniken, die zur Objektorganisation und Code-Wiederverwendung verwendet werden. Um wartbaren, skalierbaren Code zu schreiben, ist es wichtig zu verstehen, wann welche Technologie eingesetzt werden sollte.
Vererbung
Vererbung ermöglicht einer Klasse (Unterklasse), Daten und Verhalten von einer anderen Klasse (Basisklasse) zu erben. Unterklassen haben Zugriff auf alle nicht privaten Mitgliedsvariablen und -funktionen in der Basisklasse und können diese Mitglieder überschreiben, um ein anderes Verhalten zu erreichen.
Wann Vererbung verwendet werden soll:
Wenn die Unterklasse eine „Ist-ein“-Beziehung mit der Basisklasse hat, zum Beispiel:
Wenn eine bestimmte Schnittstelle erzwungen werden muss, zum Beispiel:
Vorteile:
Komposition
Komposition beinhaltet das Erstellen einer Klasse (Containerklasse) und das Einfügen einer anderen Klasse (Komponentenklasse) als Datenelement durch einen Zeiger oder eine Referenz in diese. Durch die Zusammensetzung kann eine Containerklasse die Funktionalität einer Komponentenklasse nutzen, die beiden sind jedoch separate Einheiten im Speicher.
Wann Komposition verwendet werden soll:
Wenn die Containerklasse eine „enthält-eins“-Beziehung mit der Komponentenklasse hat, zum Beispiel:
Wenn mehr Flexibilität erforderlich ist, zum Beispiel:
Vorteile:
Praktisches Beispiel:
Stellen Sie sich ein Tiersimulationsprogramm vor, bei dem verschiedene Tiere dargestellt werden müssen. Wir können Vererbung nutzen, um eine Basisklasse Animal
für alle Tiere zu definieren, die gemeinsame Eigenschaften (z. B. Name, Typ) enthält. Anschließend können wir die Unterklassen Cat
, Dog
und Bird
erstellen, um bestimmte Tierarten darzustellen, und Beschreibungen einzigartiger Verhaltensweisen für jede virtuelle Funktion der Unterklasse überschreiben . Animal
,包含共同属性(例如名称、类型)。然后,我们可以创建子类 Cat
、Dog
和 Bird
来表示特定类型的动物,并为每个子类重写描述独特行为的虚函数。
另一方面,可以考虑一个游戏引擎,其中需要表示角色。我们可以使用组合为每个角色创建一个容器类 Character
Character
zu erstellen, die andere Klassen als Komponenten enthält: class Character { public: Sword* sword; // 组件:武器 Shield* shield; // 组件:防御 Health* health; // 组件:生命值 };
Das obige ist der detaillierte Inhalt vonWann sollten Sie Vererbung und wann Komposition in C++ verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!