Looking for c++ Keywords? Try Ask4Keywords

C++Rückgabetyp Kovarianz


Bemerkungen

Bei der Kovarianz eines Parameters oder eines Rückgabewerts für eine virtuelle Elementfunktion m wird der Typ T in einer abgeleiteten Klasse von m überschrieben. Der Typ T variiert dann ( Varianz ) in der Spezifität auf dieselbe Weise ( co ) wie die Klassen, die m bereitstellen. C ++ bietet Sprachunterstützung für kovariante Rückgabetypen, bei denen es sich um Rohzeiger oder Rohreferenzen handelt. Die Kovarianz bezieht sich auf den Pointee- oder Referenztyp.

Die C ++ - Unterstützung ist auf Rückgabetypen beschränkt, da Funktionsrückgabewerte die einzigen reinen Out-Argumente in C ++ sind und Kovarianz nur für ein reines Out-Argument typsicher ist. Andernfalls könnte der aufrufende Code ein Objekt eines weniger spezifischen Typs liefern, als der empfangende Code erwartet. Die MIT-Professorin Barbara Liskov untersuchte diese und verwandte Sicherheitsprobleme des Typs "Abweichungstyp" und ist jetzt als Liskov-Substitutionsprinzip ( LSP) bekannt .

Die Kovarianz-Unterstützung hilft im Wesentlichen, Downcasting und dynamische Typüberprüfung zu vermeiden.

Da Smart-Pointer vom Klassentyp sind, kann die integrierte Unterstützung für Kovarianz nicht direkt für Smart-Pointer-Ergebnisse verwendet werden. Man kann jedoch scheinbar kovariante nicht- virtual Smart-Pointer-Wrapper-Funktionen für eine kovariante virtual Funktion definieren, die rohe Pointer erzeugt.

Rückgabetyp Kovarianz Verwandte Beispiele