009
13.07.2003, 12:46 Uhr
Oliver
S2-Pixelgeneral
|
Nein, hab so was nicht gehabt, hab ich mal schnell so zusammengestellt. (wollt sowieso schon mal so ne Mengenklasse machen )
Also:
Erst einmal sind im privaten Bereich der Klasse ein Int-Zeiger deklariert. Das könnte man auch so schreiben:
Es ist also ein dynamisches Array, weil ja die Anzahl der Elemente dynamisch sein soll. Dann ist noch ein int variable deklariert (die anzahl der Elemente).
So dann gibts es drei Konstruktore:
-den Default Konstruktor -den "normalen" Konstruktor -den Copy Konstruktor
Default-Konstruktor:
Dieser wird immer aufgerufen, wenn man schreibt:
Also immer wenn keine Parameter übergeben werden. Dieser initialisiert den Zeiger mit 0 und auch die Anzahl der Elemente mit 0.
"normaler" Konstruktor:
An diesen Konstruktor werden 2 Parameter übergeben. Einmal ein Intarray (das sind im Prinzip die verschiedenen Elemente) und dann noch die Anzahl er Elemente.
Dann wird mit new so viel Speicher belegt wie es nötig ist, also die Anzahl der Elemente. Jetzt wird die anzahl aktualisiert. Dann wird in der Forschleife jedes einzelne Element, den Elementen der Menge zugewiesen:
C++: |
elemente[i]=elements[i];
|
Das letzte (anzahl=anzahl2) ist doppelt gemoppelt, kann weg, weil es ja oben schon ist.
Copy Konstruktor:
Wie der Name schon sagt, wird hier praktisch eine Kopie angefertigt. Also er wird immer aufgerufen wenn man folgendes schreibt:
C++: |
Menge menge1; Menge menge2[b](menge1)[/b] // menge2 ist dann menge1
|
Der Rest ist im Prinzip ist das das selbe, wie der normale Kontruktor,bloß dass die Anzahl mit GetAnzahl geholt werden muss.
So, dann gibt es noch den Destruktor, wo der Speicherbereich mit delete gelöscht wird.
Die Funktion GetAnzahl erklärt sich von alleine, da wird die Anzahl zurückgegeben.
Die Funktion GetElement ist eigentlich auch klar, da wird das gewünscht Element mit dem Index index zurückgegeben, der als Parameter übergeben wurde.
Das "komplizierteste" ist eigentlich die Funktion Add. Hier wird ein Element hinzugefügt.
Als Parameter wird das gewünschte Element, was hinzugefügt werden soll, übergeben.
Dann wird eine Menge angelegt. Diese dient als Zwischenspeicher, wenn der neue Speicher allockiert wird. Als Parameter wird der Inhalt (*) von this übergeben. this ist ein Zeiger auf die Instanz, die die jeweilige Memberfunktion ausgelöst hat. Jeztz wird er CopyKonstruktor bemüht der eine Kopie herstellt. Dann wird noch die anzahl mit anzahl++; um eins erhöht, weil ja ein neues Element dazu kommt. Dann wird wieder mit new der benötigte Speicherplatz allockiert. Nun sind aber alle Elemente wieder weg. Aber dazu haben wir ja eine Kopie angefertigt. Nun werden schließlich alle Elemente wieder aufgefrischt.
Zum guten Schluss wird nun noch das Element dem letzten index zugewiesen.
Ich hoffe du hast es eingermaßen verstanden -- Demokratie ist die Diktatur der Mehrheit.
www.siedler25.org/ ( Siedler2 - Remake ) |