Domanda

È possibile accedere per accedere e usare membri statici all'interno di una classe senza prima creare un'istanza di quella classe? Vale a dire la classe come una sorta di discarica per i globali

James

È stato utile?

Soluzione

Puoi anche chiamare un metodo statico tramite un puntatore nullo. Il codice seguente funzionerà, ma per favore non usarlo :)

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;
}

Altri suggerimenti

Sì, è esattamente cosa significa statico per i membri della classe:

struct Foo {
    static int x;
};

int Foo::x;

int main() {
    Foo::x = 123;
}

D'altra parte, questo è lo spazio dei nomi per:

namespace toolbox
{
  void fun1();
  void fun2();
}

L'unico uso di classi di funzioni statiche è per le classi politiche.

In breve, sì.

In breve, un membro statico può essere chiamato ovunque, semplicemente si considera il nome della classe come uno spazio dei nomi.

class Something
{
   static int a;
};

// Somewhere in the code
cout << Something::a;

Si

class mytoolbox
{
public:
  static void fun1()
  {
    //
  }

  static void fun2()
  {
    //
  }
  static int number = 0;
};
...
int main()
{
  mytoolbox::fun1();
  mytoolbox::number = 3;
  ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top