I
hermes schrieb:
interpreter schrieb:
hermes schrieb:
vielen Dank, so Funktioniert es,
Aber warum abc *mult1 = new abc der * vor mult1?
Weil du dadurch einen Pointer definierst.
Muss ich das so sehen, das jedes Object der Klasse für sich einen Speicher-
bereich für die variablen x und y bekommt,und deswegen das Object als Zeiger declariert wird und der Zeiger mult1->x dann auf den Speicherbereich der variable x für Object mult1 zeigt.
Gruß
Johann
Ja, das haste in etwa schon alles richtig verstanden. Noch mal kurz zusammegefasst:
abc *mult1 = new abc;
multi ist eine Zeigervariable vom Typ abc und liegt auf dem Stack (wenn multi nicht gerade global ist). "new abc" allokiert Speicher für ein Objekt vom Typ abc im Heap und gibt die Adresse auf den Speicherbereich zurück, der dann der Zeigervariable mutli zugewiesen wird. Es wird übrigens nur Speicher für Member angefordert, jedoch NICHT für Methoden.
Wenn ja wird dann auch beim aufruf der Funktion mult() ein Zeiger für den
Variablenraum des Objects mit übergeben?
multi->mult()
Das hier wird "übersetzt" zu:
mult(multi) und der Prototyp sieht so aus: int multi(abc* this).
Es wird also der Funktion einfach ein Zeiger auf das Objekt, für das die Methode aufgerufen wurde, mit übergeben, so dass die Methode weiß, auf welches Objekt sie wirken soll.