F
Wenn du "Noob" bist, dann hilft es deinem Verständnis vielleicht, dass nicht-statische Methoden (oder Member-Funktionen in C++-Speak) de facto einen unsichtbaren, impliziten this-Parameter vom Typ Pointer auf Klasse der Member-Funktion haben. Eine Methode f wie diese hier
struct A
{
void f(int x)
{
return x + y;
}
int y;
};
...
A a;
a.f(5);
kannst du dir wie so eine freie Funktion hier vorstellen:
void f(A* this, int x)
{
return x + this->y;
}
...
A a;
f(&a, 5);
Zugriffe auf Member-Variablen wie hier y erfolgen dabei wie ein Zugriff über diesen Pointer.
Das besondere an statischen Methoden ist, dass sie diesen this-Pointer auf die Instanz eben nicht haben und daher auch nicht implizit auf nicht-statische Member-Variablen einer Instanz zugreifen können - nur direkt, indem man ihnen z.B. eine Instanz als expliziten Parameter übergibt und über diesen auf die Member zugreift. Sie sind diesbezüglich wie freie Funktionen, mit dem Unterschied, dass sie im Geltungsbereich (Scope) der Klasse existieren.
Man verwendet statische Funktionen gerne für Aufgaben, die zwar eng mit dem Typen (der Klasse) verbunden sind, jedoch nicht von einer konkreten Instanz abhängen.