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

War es hilfreich?

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;
  ...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top