Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

18.1 Beispiel I

18.1 Beispiel I

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
24
25
26
27
					
// Klasse mit statischen Attributen und Methoden //////////////////////////////
class CStatischesZeug {
	public:
		static const int m_iNameLength = 80;
		static char* ClassName();
};

// Implementierung einer statischen Methode ///////////////////////////////////
char* CStatischesZeug::ClassName() {
	char* pstrResult = new char[m_iNameLength];
	strcpy_s(pstrResult, m_iNameLength, "CStatischesZeug");

	return pstrResult;
} // ClassName ////////////////////////////////////////////////////////////////



// Hauptfunktion der Anwendung ////////////////////////////////////////////////
int main(int argc, char** argv) {
	char*	pstrName	= CStatischesZeug::ClassName();
	int	iLength		= CStatischesZeug::m_iNameLength;

	printf("Name der statischen Klasse: %s\n", pstrName);
	printf("Laenge des Klassennamens:   %i",   iLength);

	delete [] pstrName;
	return 0;
} // main /////////////////////////////////////////////////////////////////////
					

Ausgabe:

Name der statischen Klasse: CStatischesZeug
Laenge des Klassennamens:   80
		

In der Klassendefinition, in Zeile 1 bis 4, steht jetzt vor dem Attribut und vor der Methode das Schlüsselwort "static". Ansonsten hat sich hier nichts weiter verändert.

Auch die Implementierung der Methode in Zeile 7 bis 12, sieht erst einmal nicht anders aus, als gewohnt. Allerdings gibt es hier eine Kleinigkeit, die zunächst nicht offensichtlich ist. In statischen Methoden darf und kann man den "this" Zeiger nicht benutzen. Dies würde ja voraussetzen, dass es eine Instanz der Klasse gibt, auf welche referenziert werden kann, was bei statischen Sachen, nicht der Fall ist.

In der "main" Funktion ist jetzt etwas entscheidendes anders. In Zeile 17 und 18, greife ich jetzt auf die statische Methode und das statische Attribut der Klasse zu, ohne mir eine Objektinstanz der Klasse zu erzeugen. Sehr markant an solchen Aufrufen bzw. Zugriffen, sind der explizite Zugriff über den Namespace der Klasse. Grob gesagt kann man sich also statische Attribute und Methoden als globale Variablen bzw. Funktionen vorstellen, welche innerhalb einer Klasse gekapselt sind und nur mit dem vorangestellten Klassennamen aufrufbar sind.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012