Was ist virtuelle Vererbung?

Virtuelle Vererbung ist eine Art von Vererbung, bei der die Implementierung einer Oberklasse unvollständig ist und für die vollständige Definition eines Objekts eine Unterklasse erforderlich ist. Diese Art der Vererbung kann sowohl in Verbindung mit der Einzel- als auch mit der Mehrfachvererbung verwendet werden, wird jedoch am häufigsten bei der Mehrfachvererbung verwendet. Jede Klasse, die von einer virtuellen Basisklasse erbt, wird zu einer direkten Unterklasse dieser Basisklasse. Eine virtuelle Basisklasse benötigt möglicherweise eine Unterklasse, um alle Methoden zu implementieren, dies ist jedoch keine Voraussetzung.

C ++ ist die bekannteste Computersprache für die Verwendung der virtuellen Vererbung. Um die virtuelle Vererbung in C ++ zu deklarieren, wird das Schlüsselwort "virtual" verwendet. Sowohl die Oberklasse als auch die Unterklasse müssen virtuelle Methoden mit dem Schlüsselwort "virtual" deklarieren. Dies teilt dem C ++ - Compiler mit, dass die Superklasse unvollständig ist und Informationen von der Unterklasse abrufen muss, um sie zu vervollständigen. Die Verwendung der Unterklasse zur Vervollständigung der Superklasse bedeutet nicht, dass sich die Unterklassen gegenseitig überschreiben, wenn sie dieselbe Basisklasse haben. Stattdessen ermittelt der C ++ - Compiler, welche Teile zu jedem Objekt gehören.

Da für die virtuelle Vererbung eine virtuelle Basisklasse erforderlich ist, können globale Funktionen in C ++ nicht als virtuell deklariert werden. Dieser Vererbungstyp kann nur verwendet werden, wenn die Prinzipien der objektorientierten Programmierung (OOP) eingehalten werden. Der Grund dafür ist, dass globale Funktionen keiner bestimmten Klasse zugeordnet sind und daher in der Regel eigenständig sind. Ohne eine Superklasse und eine Unterklasse kann keine Vererbung stattfinden. Globale Funktionen und virtuelle Vererbung schließen sich daher gegenseitig aus. Globale Funktionen können theoretisch in virtuellen Funktionen verwendet werden, aber das Gegenteil funktioniert möglicherweise nicht immer.

Virtuelle Vererbung wird verwendet, um viele Programmierprobleme zu lösen, und eine der nützlichsten ist die Auflösung von Mehrdeutigkeiten. Bei der Mehrfachvererbung hat man möglicherweise eine Basisklasse A mit zwei Unterklassen, B und C, und dann eine Klasse D, die von beiden Klassen B und C erbt. B und C haben alle Implementierungen derselben Methode. Klasse D kann nicht bestimmen, welche Implementierung sie verwenden soll. Die virtuelle Vererbung löst dieses Problem, da die Implementierung jeder Klasse unterschiedlich und daher eindeutig bleibt. Diese Unterscheidung wird von spezialisierten internen Objekten, sogenannten virtuellen Tabellen (vtables), vorgenommen, die jeden Objekttyp verfolgen. Diese Tabellen müssen jedoch nicht explizit von einem Programmierer bearbeitet werden, da sie in die Sprache integriert sind.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?