====== Was ist ein Member? ====== Ein Member - auf Deutsch 'Mitglied' - gehört zu einem überordneten Bereich. Dieser Bereich ist in diesem Fall eine Klasse. ===== Membervariablen ===== Eine Instanz einer Klasse kann Variablen enthalten - genauso wie eine Struktur. Diese Variablen nennt man entsprechend Membervariable: class Point { public: int XPosition; // Membervariable int YPosition; // Membervariable }; entspricht struct Point { int XPosition; // Membervariable int YPosition; // Membervariable }; Auf Membervariablen wird genauso wie auf Member von [[c:type:struct|C-Strukturen]] zugegriffen. Point point, Point *pointer = &point; point.XPosition = 4; pointer->YPosition = 5; Aber nun kommen wir langsam zu den ersten Unterschieden zwischen Klassen in C++ und [[c:type:struct|C-Strukturen]]: C++-Klassen können auch zugehörige Funktionen haben. Diese Funktionen nennt man häufig auch Methoden: ===== Methoden ===== Methoden sind eigentlich ganz normale Funktionen, die jedoch zu einer Klasse gehören und auch nur mit einer Instanz gerufen werden können. Bauen wir eine Prozedur ''Print'' zu unserer Point-Klasse hinzu: class Point { public: int XPosition; // Membervariable int YPosition; // Membervariable void Print( void ); // Methode }; Diese Methode gehört nun zur Klasse Point. Wenn sie nun im Quelltext beschrieben wird, so muss auch klargestellt werden, dass es sich um die ''Print''-Methode der Klasse ''Point'' handelt. Man spricht davon, dass die Klasse einen Namensraum hat, der ihrem Namen entspricht - eben ''Point'' und dass die Methode im Namensraum der Klasse ''Point'' liegt. Um diese Zugehörigkeit zu einem Namensraum auszudrücken, wird der Operator ''::'' verwendet: void Point::Print( void ) { printf( "Point: %d/%d\n", XPosition, YPosition ); } Eine Methode hat immer Zugriff auf alle Member der Klasse, also alle anderen Methoden und alle Membervariablen. Deswegen kann eine solche Methode auch nicht ohne eine Instanz der Klasse gerufen werden. Der Zugriff auf eine Methode entspricht dem auf eine Membervariable - nur dass sie, wie für eine Funktion üblich, eine Parameterliste erhält: Point point, Point *pointer = &point; point.XPosition = 4; pointer->YPosition = 5; point.Print(); pointer->Print();