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.


Anmelden zum Antworten