Frage zum static_cast
-
Hallo so kann ich ja z.b. ein int nach char casten. Hat der static_cast was mit dem Datentyp static zu tun? Ich hab gehört der static_cast wäre besser als der C-Style cast. Was ist denn am static_cast besser?
int v = 2; cout<< (char) v; cout<< static_cast<char> (v);
-
Frag doch im C++ Forum..
CarstenDerCaster schrieb:
Was ist denn am static_cast besser?
Die C++ Casts drücken alle unterschiedliche Intentionen aus, können für sich weniger und sind deshalb sicherer gegen falsche Anwendung.
Der static_cast ist hier der einfache, "ungefährliche" cast. Er kann z.B. kein const entfernen (das kann const_cast*) und nicht zwischen unabhängigen Pointern/Referenzen konvertieren (das kann reinterpret_cast).z.B.
const int* p; const void* q = p; // Implizit möglich p = static_cast<const int*>(q); // Mit static_cast möglich const double* r = reinterpret_cast<const double*>(p); // Nur mit reinterpret_cast möglich. (Ist ja auch ziemlich aua. ;)) double* s = const_cast<double*>(r); // Nur mit const_cast möglich. (Auch sehr aua.)* const kann nur von "pointer to const type" bzw. "reference to const type" entfernt werden, da ein Zugriff auf einen "const type" eh undefiniert wäre.
-
CarstenDerCaster schrieb:
Hat der static_cast was mit dem Datentyp static zu tun?
static ist kein Datentyp, sondern eine Speicherklasse. Aber auch damit hat static_cast nichts zu tun -- es geht dabei nur um den Gegensatz zum dynamic_cast.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ (auch C++0x und C++11) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.