Erklärung eines Programmabschnittes so richtig?



  • Also es geht um diesen Abschnitt:

    Person a;
    Person *a = new Person();
    

    Ich mach mir nix vor, dass sollte in einem Test erklärt werden, meine Erklärung lautet wie folgt:

    Bei Person a wird ein neues Objekt von der Klasse Person instanziiert und danach arbeitet man mit dem .-operator um Attribute und Methoden aufzurufen.
    Man arbeitet also direkt mit einem Objekt.
    Bei Person *a = new Person(); wird ein Pointer namens a erstellt der auf eine Klasse Person zeigt und ihm wird auch gleich ein neu instanziertes Objekt von der Klasse Person per new zugewiessen worauf er zeigt.
    Der Unterschied zu Person a; ist das man hier mit einem Pointer auf eine Instanz arbeitet und per -> auf Methoden und Atrribute zugreift.

    Stimmt das so? Oder hab ich Mist geschrieben 🙄



  • Du hättest vielleicht noch schreiben sollen, dass bei "Person a;" das Objekt auf dem Stack angelegt wird und automatisch wieder gelöscht wird, wenn der aktuelle Scope verlassen wird. Bei "person *a = new Person();" wird das Objekt auf dem Heap angelegt und nicht automatisch gelöscht, dass muss der Programmierer selbst mit delete erledigen.



  • Unwissender5000 schrieb:

    Bei Person *a = new Person(); wird ein Pointer namens a erstellt der auf eine Klasse Person zeigt

    Der Pointer a zeigt nicht auf eine Klasse Person, er ist vielmehr vom Typ "Pointer auf Person".



  • Ok vielen Dank, dann stimmt es ja so halbwegs 🙂
    Außerdem weiß ich nun wie ich es beim nächsten mal besser beschreiben kann 🙂


Anmelden zum Antworten