Hallo zusammen
Was bewirkt das Schlüsselwort static bei der Deklarierung einer Funktion?
Liebe Grüße
Xeon
Schlüsselwort static bei Funktionen
- cloidnerux
- Moderator
- Beiträge: 3123
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Schlüsselwort static bei Funktionen
Da gibt es einen Unterschied zwischen C und C++
In C meint static eine Funktion, die nur innerhalb der Datei(Translation Unit) gültig ist. Soll wohl verhindern, dass Funktionen außerhalb ihres Kontextes verwendet werden sollen.
In C++ kann es aber auch eine Klassen-Funktion kennzeichnen, die ohne instanzierung der Klasse aufgerufen werden kann. Damit kennzeichnest du, dass die Funktion keinen Zugriff auf die Klassen-Member durchführt.
In C meint static eine Funktion, die nur innerhalb der Datei(Translation Unit) gültig ist. Soll wohl verhindern, dass Funktionen außerhalb ihres Kontextes verwendet werden sollen.
In C++ kann es aber auch eine Klassen-Funktion kennzeichnen, die ohne instanzierung der Klasse aufgerufen werden kann. Damit kennzeichnest du, dass die Funktion keinen Zugriff auf die Klassen-Member durchführt.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
- Xin
- nur zu Besuch hier
- Beiträge: 8859
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Schlüsselwort static bei Funktionen
Das kommt drauf an, wo Du static benutzt.
In C++ bedeutet static innerhalb einer Klasse, dass die Funktion keine Methode ist. Eine Methode ist vom einem existierenden Objekt abhängig, eine statische Funktion befindet sich nur im Namensraum einer Klasse, ist aber eine ganz normale C-Funktion, nicht von einem existierenden Objekt abhängig ist - es existiert hier also keine this-Variable.
Schreibt man static vor eine Funktion außerhalb einer Klasse, so ist die Funktion nicht von anderen Dateien aus sichtbar. Sie wird also förmlich versteckt, so dass man z.B. eine Hilfsfunktion nur in dieser einen Datei nutzen kann.
PS: Ich sollte mich beim schreiben weniger ablenken lassen, aber immerhin mal wieder einen Tauchkurs verkauft.
In C++ bedeutet static innerhalb einer Klasse, dass die Funktion keine Methode ist. Eine Methode ist vom einem existierenden Objekt abhängig, eine statische Funktion befindet sich nur im Namensraum einer Klasse, ist aber eine ganz normale C-Funktion, nicht von einem existierenden Objekt abhängig ist - es existiert hier also keine this-Variable.
Schreibt man static vor eine Funktion außerhalb einer Klasse, so ist die Funktion nicht von anderen Dateien aus sichtbar. Sie wird also förmlich versteckt, so dass man z.B. eine Hilfsfunktion nur in dieser einen Datei nutzen kann.
PS: Ich sollte mich beim schreiben weniger ablenken lassen, aber immerhin mal wieder einen Tauchkurs verkauft.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.