Einführung in C++
Einführung in C++
Instantiierung von Objekten IIV Instantiierung von Objekten IIV
●
Dynamische Objekte werden angelegt, wenn sie
benötigt werden, und wieder entsogt, wenn sie nicht mehr gebraucht werden.
●
In C gab es dazu die Funktionen malloc() (zum
Reservieren des Speichers) und free() zum wieder freigeben.
●
In C++ können diese Funktionen aber nicht verwendet werden, da es mit der bloßen Bereitstellung von
Speicher nicht getan ist (Konstruktor, etc...)
●
Daher gibt es in C++ die Funktionen new() und
delete()
Instantiierung von Objekten V Instantiierung von Objekten V
●
Wie in C werden auch hier Zeiger benötigt, in denen das Ergebnis der new()-Operation abgelegt wird.
kreis *kopf ; // Pointer anlegen rechteck *rumpf ;
void init() { // Objekt erstellen und „einhängen“
kopf = new kreis (100, 50, 20, SCHWARZ);
rumpf = new rechteck (170, 80, 21, SCHWARZ);
}
void zeichnung() { ...
kopf > draw(); //im Unterschied zur statischen Allokation rechteck > draw(); //werden in dynamisch allozierten Objekten } //die Funktion draw() mit dem > verwendet void destore() { //Anschließend muss der nicht mehr
delete kopf; //benötigte Speicher wieder freigegeben delete rumpf; //werden.
}
Referenzen Referenzen
void tausch(int *a, int *b) { int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
int main () {
int x = 1, y = 3;
tausch(&x, &y);
return(0);
}
●
Sie sind neu in C++. Eine Referenz ist ein konstanter Zeiger, der bei jeder Verwendung automatisch
dereferenziert wird.
void tausch(int &a, int &b) { int tmp;
tmp = a;
a = b;
b = tmp;
}
int main() {
int x = 1, y = 3;
tausch(x, y);
return(0);
}
●
Eine Referenz ist praktisch ein Alias für die gleiche
Speicherstelle, die auch für eine Variable mit anderem Namen gilt.
Tausch durch Pointer
Tausch durch Referenz
Referenzen Referenzen
●
In der Definition steht hinter dem Typ des Parameters jeweils das &. Die dadurch erstellten Referenz-Variablen (a und b) bekommen die gleiche Speicheradresse wie die an die Funktion übergebenen Variablen x und y.
Alles, was jetzt mit a und b gemacht wird, passiert auch mit x bzw. y!
●
Bei Verwendung von Referenzen muss nicht
Dereferenziert (*) werden. Es kann direkt mit den Variablennamen gearbeitet werden.
●