2 Stimmen

Downcasting mit static_cast - Zeiger und Objekte

Sage ich habe die folgenden Klassenarten

class base
{

};

class der : public base
{
};

Mit static_Cast können Sie Objekte und Zeiger verwenden.

Ich habe Folgendes ausprobiert - was funktioniert (Zeiger)

base* b = new base();
der * m = static_cast(b);

Allerdings funktioniert das Folgende nicht

base b;
der m = static_cast(b);

Irgendwelche Vorschläge, warum das zweite nicht funktioniert? Behandelt static_cast nicht mit Zeigern und Objekten? Es funktioniert mit Zeigern, aber es funktioniert nicht mit dem Objekt?

8voto

Oliver Charlesworth Punkte 259497

Im ersten Fall sagst du: "Ich habe einen Zeiger, und ich verspreche, dass er auf einen der zeigt, also bitte geh einfach mit."1

Im zweiten Fall kannst du kein solches Versprechen abgeben, denn du hast eindeutig ein base, und nicht ein der.


1. Natürlich, weil er <em>tatsächlich</em> nicht auf einen <code>der</code> zeigt, wirst du undefiniertes Verhalten zur Laufzeit erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X