sagen, dass ich die Klassenhierarchie haben:In C++ 11 gibt eine fehlgeschlagene dynamic_cast NULL oder Std :: nullptr zurück?
class Base{
}
class Derived : public Base{
}
Angenommen, ich möchte überprüfen, ob ein Objekt vom Typ abgeleitet wird oder nicht:
Base* b = new Base();
Derived* d = dynamic_cast<Derived*>(b);
if(b!=nullptr){ //Should this check be for 0, NULL or nullptr ?
// b is not Derived
}
Soll ich für 0, NULL oder nullptr in C Testen werden ++ 11?
eine Antwort gefunden: (Leider hat es nicht angezeigt, wenn ich über google gesucht) In c++11, does dynamic_cast return nullptr or 0?
Unabhängig davon sollten Sie für 'nullptr' testen, um den Lesern des Codes am klarsten zu kommunizieren, was das Programmieren in einer Sprache über dem numerischen Maschinencode ist. –
Ein fehlgeschlagener 'dynamic_cast ' gibt 0, NULL oder nullptr nicht zurück. Es gibt eine Null 'Base * 'zurück. Aber das ist irrelevant für die Frage, mit welchem der 3 Sie es vergleichen sollten. –
@BenjaminLindley Warum überprüfen dann einige Leute beim Testen, ob ein dynamic_cast funktioniert? –