Müssen Aufrufe von Std-Konstruktoren qualifiziert werden?

8

Müssen Aufrufe von std -Konstruktoren mit std:: ?

qualifiziert werden? %Vor%

Es funktioniert auf meinem Compiler ohne die Qualifikation, aber ich bin nicht sicher, ob dieses Verhalten Standard ist.

    
fredoverflow 06.07.2012, 14:17
quelle

2 Antworten

7

Nein, tust du nicht. Die Namen in der Initialisierungsliste werden im Bereich der Klasse whatever nachgeschlagen. Dieser Klassenbereich enthält Namen, die in Basisklassen deklariert sind, und der Name der Basisklasse ( runtime_error ) wird in den Bereich von std::runtime_error eingefügt (dies ist Standardverhalten für alle Klassen).

Beachten Sie, dass dies nicht funktioniert, wenn der Name, den Sie verwenden, ein typedef für den tatsächlichen Klassennamen ist. Sie können leicht mit z. B. std::istream und Freunden versucht werden. Siehe hier.

    
Charles Bailey 06.07.2012, 14:22
quelle
1

Es gibt keine Notwendigkeit für die Qualifikation in der Initialisierungsliste (um ehrlich zu sein, ich weiß nicht, ob die Qualifikation dort überhaupt erlaubt ist), da es eine Basis ist und durch Nachschlagen durch die Klasse gefunden wird.

>     
quelle