Heim > Backend-Entwicklung > C++ > Was ist Object Slicing und wann kommt es bei der Vererbung vor?

Was ist Object Slicing und wann kommt es bei der Vererbung vor?

DDD
Freigeben: 2024-12-29 02:17:10
Original
211 Leute haben es durchsucht

What is Object Slicing and When Does it Occur in Inheritance?

Object Slicing: Datenverlust bei der Vererbung

In der objektorientierten Programmierung ermöglicht die Vererbung Klassen, die Funktionalität ihrer übergeordneten Klassen zu erweitern. Dieser Vererbungsmechanismus kann jedoch ein Phänomen hervorrufen, das als Objekt-Slicing bekannt ist und zu Datenverlust führen kann.

Was ist Objekt-Slicing?

Objekt-Slicing tritt auf, wenn ein Objekt Einer abgeleiteten Klasse wird eine Instanz einer Basisklasse zugewiesen. Während dieser Zuweisung wird ein Teil der Daten der abgeleiteten Klasse unzugänglich und wird „weggeschnitten“.

Wann findet Objekt-Slicing statt?

Betrachten Sie die folgenden zwei Klassen:

class A {
   int foo;
};

class B : public A {
   int bar;
};
Nach dem Login kopieren

Eine Instanz der Klasse B enthält zwei Datenelemente: foo (geerbt von A) und bar. Wenn Sie jedoch ein Objekt vom Typ B einer Instanz vom Typ A wie folgt zuweisen:

B b;
A a = b;
Nach dem Login kopieren

Auf die Datenelementleiste im B-Objekt kann im A-Objekt nicht mehr zugegriffen werden, was zu einer Objektaufteilung führt. Dies geschieht, weil a als Basisklasseninstanz behandelt wird und keine Kenntnis über das in der abgeleiteten Klasse B definierte Balkenelement hat.

Das obige ist der detaillierte Inhalt vonWas ist Object Slicing und wann kommt es bei der Vererbung vor?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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