C ++ statische Elemente in Klasse
Frage
Ist es möglich, den Zugriff auf und innerhalb einer Klasse statische Mitglieder, ohne zuerst eine Instanz dieser Klasse zu verwenden, um Zugang zu schaffen? Dh behandeln die die Klasse als eine Art Abladeplatz für Globals
James
Lösung
Sie können auch eine statische Methode durch einen Null-Zeiger aufrufen. Der folgende Code wird funktionieren, aber bitte verwenden Sie es nicht:)
struct Foo
{
static int boo() { return 2; }
};
int _tmain(int argc, _TCHAR* argv[])
{
Foo* pFoo = NULL;
int b = pFoo->boo(); // b will now have the value 2
return 0;
}
Andere Tipps
Ja, es ist genau das, was static
bedeutet für die Teilnehmer:
struct Foo {
static int x;
};
int Foo::x;
int main() {
Foo::x = 123;
}
Auf der anderen Seite, das ist, was Namespace ist für:
namespace toolbox
{
void fun1();
void fun2();
}
Die einzige Verwendung von Klassen von statischen Funktionen ist für die politischen Klassen.
Kurz gesagt, ja.
lang, ein statisches Element kann überall aufgerufen werden, können Sie einfach den Klassennamen als Namespace behandeln.
class Something
{
static int a;
};
// Somewhere in the code
cout << Something::a;
Ja:
class mytoolbox
{
public:
static void fun1()
{
//
}
static void fun2()
{
//
}
static int number = 0;
};
...
int main()
{
mytoolbox::fun1();
mytoolbox::number = 3;
...
}