Heim > Backend-Entwicklung > C++ > Wann sollten Sie Vererbung und wann Komposition in C++ verwenden?

Wann sollten Sie Vererbung und wann Komposition in C++ verwenden?

WBOY
Freigeben: 2024-06-03 10:33:56
Original
837 Leute haben es durchsucht

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.

C++ 中什么时候应该使用继承,什么时候应该使用组合?

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:

    • Fahrzeuge: Autos, Lastwagen, Motorräder
    • Tiere: Katzen, Hunde, Vögel
  • Wenn eine bestimmte Schnittstelle erzwungen werden muss, zum Beispiel:

    • Formen: Kreis, Quadrat, Dreieck

Vorteile:

  • Bietet Wiederverwendbarkeit des Codes
  • Fördert. Polymorphismus (Über virtuell Funktionen)
  • Schnittstellenkonsistenz erzwingen

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:

    • Auto: Motor, Reifen, Karosserie
    • Computer: Motherboard, CPU , Speicher
  • Wenn mehr Flexibilität erforderlich ist, zum Beispiel:

    • Ändern Sie die Komponenten der Containerklasse zur Laufzeit.
    • Verwenden Sie verschiedene Arten von Komponenten, um dieselbe Schnittstelle zu implementieren.

Vorteile:

  • bereitgestellt Größere Flexibilität
  • Ermöglicht die Wiederverwendung von Code
  • Fördert die Modularität

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,包含共同属性(例如名称、类型)。然后,我们可以创建子类 CatDogBird 来表示特定类型的动物,并为每个子类重写描述独特行为的虚函数。

另一方面,可以考虑一个游戏引擎,其中需要表示角色。我们可以使用组合为每个角色创建一个容器类 Character

Stellen Sie sich andererseits eine Spiel-Engine vor, bei der Charaktere dargestellt werden müssen. Wir können Komposition verwenden, um für jeden Charakter eine Containerklasse Character zu erstellen, die andere Klassen als Komponenten enthält:

class Character {
public:
  Sword* sword;  // 组件:武器
  Shield* shield;  // 组件:防御
  Health* health;  // 组件:生命值
};
Nach dem Login kopieren

Auf diese Weise können wir ganz einfach jeden Charakter mit unterschiedlichen Waffen-, Verteidigungs- und Gesundheitswerten erstellen, ohne eine Rolle zu erstellen mehrere geerbte Klassen.

Zusammenfassend lässt sich sagen, dass in C++ die Vererbung hauptsächlich zum Herstellen von „Ist-ein“-Beziehungen und zum Erzwingen der Schnittstellenkonsistenz verwendet wird, während die Komposition hauptsächlich zum Herstellen von „Enthält-Eins“-Beziehungen und zur Bereitstellung größerer Flexibilität verwendet wird. Abhängig von den spezifischen Anforderungen Ihrer Anwendung ist die kluge Auswahl dieser Technologien entscheidend für das Schreiben klaren, wartbaren Codes. 🎜

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage