Eine statische FUnktion ist eine Memberfunktion einer Klasse, welche aber nicht mit einem Objekt verbunden ist. Es ist sozusagen eine freie Funktion, aber eben mit einer engen Bindung an Objekte der Klasse. Oftmals werden statische Funktionen als Fabrikfunktion benutzt.
Also z.B
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
class foo
{
public:
static foo* create () { return new foo; }
private:
foo (){}
foo (const foo& o){}
};
|
Somit kann man nur mit der create Funktion ein Objekt der Klasse erstellen.
Ist prinzipiell das gleiche, wie das hier:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
class foo
{
private:
foo (){}
foo (const foo& o){}
friend foo* create_foo (); // friend, damit auf die privaten Funktionen zugegriffen werden darf
};
foo* create_foo ()
{ return new foo; }
|
Anstatt eine die Funktion
create_foo zu nennen, hätten wir sie auch in einen namespace packen können. Aber in dem Falle ist eine statische Funktion wohl eleganter.
Vielleicht hilft dir auch dieser Artikel hier:
Hacky Wednesday