Klassen erstellen



  • Hey leute ich lerne zurzeit C++ und stelle mir schon öfter die frage wo hier der unterschied besteht:

    klasse name
    

    und

    new Klasse;
    

    ich habe auch gelesen das soetwas möglich ist was mich total verrückt gemacht hat:

    klasse e
    e = new klasse;
    

    Hier verstehe ich nicht den sinn wenn man schon vorher die variable schließlich deklariert hat

    Freue mich auf jede Antwort



  • In C++ gibt es 3 verschiedene Speicherbereiche in denen du dein Objekt ablegen kannst. Da gibt es den automatischen Speicher (Stack), da gibt es den dynamischen Speicher (Heap) und da gibt es den statischen Speicher (für globale Objekte und statische Objekte).

    Klasse name ==> Stack
    new Klasse ==> Heap ==> Das letzte ist ja dasselbe, nur dass du hierbei die Adresse, die dir new zurückgibt, in einem abspeicherst (du hast den Stern * vergesssen).



  • out schrieb:

    in einem abspeicherst (du hast den Stern * vergesssen).

    in einem Zeiger abspeicherst.



  • Sebi1997 schrieb:

    ich habe auch gelesen das soetwas möglich ist was mich total verrückt gemacht hat:

    klasse e
    e = new klasse;
    

    Hier verstehe ich nicht den sinn wenn man schon vorher die variable schließlich deklariert hatt

    Das geht tatsächlich nicht. In kompilierfähigem Code (ich schreibe bewusst nicht "in gutem Code") ist das so:

    klasse* e;  // Pointer!
    e = new klasse;
    

    In gutem Code sollte "new" (fast) nur in Verbindung mit Smart Pointern verwendet werden.


Log in to reply