2012-09-03 22 views
7

Der C++ 03-Standard ist §1.8 [intro.object]/4:Was bedeutet das "am meisten abgeleitete Objekt"?

Wenn ein vollständiges Objekt ein Datenelement (9.2), oder ein Array-Element von Klassentyp ist, ist ihre Art als die am weitesten abgeleitete Klasse betrachtet, zu unterscheiden sie von der Klassenart eines Unterobjekts der Basisklasse; Ein Objekt eines am weitesten abgeleiteten Klassentyps wird als das am meisten abgeleitete Objekt bezeichnet.

Kann jemand Licht auf das "am meisten abgeleitete Objekt" werfen? Einige Beispiele würden sehr geschätzt werden.

Antwort

12

Das Zitat definiert die Bedeutung von am meisten abgeleiteten Klasse als die Klasse des Objekts instanziiert werden. Während ein Objekt von viele Typen sein kann, als Vererbungsmodelle die ist eine Beziehung, wird es nur eine am meisten abgeleitete Klasse haben.

mit einem Beispiel:

class base {}; 
class derived : base {}; 
class base2 {}; 
class mostderived : derived, base2 {}; 

mostderived md; 

Das Objekt md ist meisten abgeleiteten Klassemostderived, obwohl es auch von Typ ist base, derived und base1. Wenn man über md spricht, gibt es eine Subobjekt des Typs base, ein Subobjekt des Typs derived (das das Subobjekt der Art umfasst base) und ein Subobjekt des Typs base2, aber nur ein meist abgeleitetes Objekt die md vom Typ mostderived.