Seite 1 von 1

Schlüsselwort static bei Funktionen

Verfasst: Di Sep 29, 2020 12:47 pm
von Xeon
Hallo zusammen

Was bewirkt das Schlüsselwort static bei der Deklarierung einer Funktion?


Liebe Grüße
Xeon

Re: Schlüsselwort static bei Funktionen

Verfasst: Di Sep 29, 2020 3:58 pm
von cloidnerux
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.

Re: Schlüsselwort static bei Funktionen

Verfasst: Di Sep 29, 2020 5:15 pm
von Xin
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. :-D