Schlüsselwort static bei Funktionen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

Schlüsselwort static bei Funktionen

Beitrag von Xeon » Di Sep 29, 2020 12:47 pm

Hallo zusammen

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


Liebe Grüße
Xeon

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Schlüsselwort static bei Funktionen

Beitrag von cloidnerux » Di Sep 29, 2020 3:58 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
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

Beitrag von Xin » Di Sep 29, 2020 5:15 pm

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
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.

Antworten