Hat "const" in C++ die gleiche Bedeutung wie "static" in Java?



  • Habe gerade erst angefangen, mich mit C++ zu beschäftigen und wollte wissen, ob ich das so richtig verstanden habe.



  • Ich glaube, eher dieselbe Bedeutung wie "final".


  • Mod

    Nein, überhaupt nicht.

    Das (ungefähre!) Äquivalent des Java-static in C++ ist static. Zumindest in gewissen Zusammenhängen, denn in C++ kann static vieles verschiedenes bedeuten, je nach Kontext.

    Ein ungefähres Äquivalent von C++-const gibt es in Java nicht. final wurde zwar genannt und hat eine gewisse Ähnlichkeit, aber trifft die Bedeutung von const in C++ nicht so wirklich.



  • SeppJ schrieb:

    Ein ungefähres Äquivalent von C++-const gibt es in Java nicht. final wurde zwar genannt und hat eine gewisse Ähnlichkeit, aber trifft die Bedeutung von const in C++ nicht so wirklich.

    Was ist der Unterschied?



  • Kenner des C++17 schrieb:

    SeppJ schrieb:

    Ein ungefähres Äquivalent von C++-const gibt es in Java nicht. final wurde zwar genannt und hat eine gewisse Ähnlichkeit, aber trifft die Bedeutung von const in C++ nicht so wirklich.

    Was ist der Unterschied?

    In Java gibt es keine final Objekte, nur final Referenzen. C++ kennt beides.

    class Point {
        public int x;
    }
    
    final Point p = new Point();
    p.x = 3;
    

    ist überhaupt kein Problem in Java.

    struct Point {
        int x;
    };
    
    Point const p;
    p.x = 3;
    

    hingegen schon in C++.

    Am ehesten kommen Pointer-Konstanten in C++ an das Java final heran.

    Point* const p = new Point(); // new hier nur zum verdeutlichen, keine Stildiskussion bitte.
    p->x = 3; // Kein Problem.
    p = new Point(); // nöööp
    

Anmelden zum Antworten