Müssen Aufrufe von std
-Konstruktoren mit std::
?
Es funktioniert auf meinem Compiler ohne die Qualifikation, aber ich bin nicht sicher, ob dieses Verhalten Standard ist.
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.
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.
>Tags und Links c++ namespaces inheritance constructor exception