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