Was bedeutet C ++ in einer Klasse?

8

Was bedeutet es, eine Verwendung innerhalb einer Klassendefinition zu haben?

%Vor%     
WilliamKF 05.03.2011, 16:33
quelle

4 Antworten

16

Diese Deklaration blendet ein Basisklassenmitglied ein. Dies wird meistens verwendet, um Überladungen einer Elementfunktion zu ermöglichen. Beispiel:

%Vor%     
aschepler 05.03.2011, 16:36
quelle
5

Der Fall, den ich gesehen habe:

%Vor%

Da ich eine neue foo-Funktion in B mit einer anderen Signatur implementiert habe, verbirgt sie die foo-Funktionen von A. Um dieses Verhalten zu überschreiben, würde ich tun:

%Vor%     
Winston Ewert 05.03.2011 16:36
quelle
4

In den meisten Fällen wird Syntax wie folgt verwendet:

%Vor%

Die using -Deklaration hier blendet eine Member-Deklaration von der Elternklasse ein. Dies ist manchmal notwendig, wenn eine andere Member-Deklaration in derived das Member vor base verbergen kann.

    
greyfade 05.03.2011 16:37
quelle
0

Wenn anotherClass eine Basisklasse ist, die eine Elementfunktion wie

enthält %Vor%

und Sie beschließen, die Funktion in der abgeleiteten Klasse wie

zu überladen %Vor%

Es "verbirgt" f () in der Basisklasse. Ein Aufruf von f () über einen Zeiger auf die abgeleitete Klasse würde beispielsweise zu einem Fehler führen, da der Compiler die Version von f () nicht "sieht" und keine Argumente mehr von der Basisklasse erhält.

Durch das Schreiben

%Vor%

Sie können die Basisklassenfunktion wieder in den Gültigkeitsbereich bringen und damit die Überladungsauflösung aktivieren, wie Sie es ursprünglich erwartet haben.

    
dau 05.03.2011 16:45
quelle

Tags und Links