Heim >Backend-Entwicklung >C++ >Warum sind Zeiger/Referenzen für Polymorphismus unerlässlich?
Polymorphismus: Die Notwendigkeit von Zeigern/Referenzen
Polymorphismus, ein grundlegendes Konzept in der objektorientierten Programmierung, ermöglicht die Existenz von Objekten verschiedener Klassen behandelt, als gehörten sie zu einer gemeinsamen Oberklasse. Während es intuitiv erscheinen mag, dass die Zuweisung von Speicher auf dem Heap für die dynamische Bindung ausreichen würde, verhindert das Fehlen von Zeigern oder Referenzen grundsätzlich den Polymorphismus.
Um zu verstehen, warum, betrachten Sie das folgende Beispiel:
Derived d; Base* b = &d;
In diesem Szenario befindet sich d auf dem Stapel, der Polymorphismus bleibt jedoch für b funktionsfähig. Dies liegt daran, dass b die notwendigen Informationen zum Auffinden der abgeleiteten Klasseninstanz behält.
Andererseits kann Polymorphismus ohne einen Basisklassenzeiger oder eine Referenz nicht funktionieren. Bedenken Sie:
Base c = Derived();
Aufgrund des Slicings wird das C-Objekt als Basis und nicht als abgeleitetes Objekt erkannt. Obwohl Polymorphismus technisch funktioniert, geht das abgeleitete Klassenobjekt im Wesentlichen verloren.
Schließlich gilt im folgenden Code:
Base* c = new Derived();
c zeigt einfach auf einen Speicherort, der möglicherweise ein Basisobjekt oder ein abgeleitetes Objekt enthält . Für virtuelle Methodenaufrufe ist eine dynamische Bindung weiterhin möglich, da der Aufrufer die spezifische Klasse nicht kennt.
Daher ist die Verwendung von Zeigern oder Referenzen für Polymorphismus unverzichtbar, da sie:
Das obige ist der detaillierte Inhalt vonWarum sind Zeiger/Referenzen für Polymorphismus unerlässlich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!