Question

Est-il possible d'accéder à des membres statiques au sein d'une classe et de les utiliser sans créer au préalable une instance de cette classe? Ie traite la classe comme une sorte de dépotoir pour les globals

James

Était-ce utile?

La solution

Vous pouvez également appeler une méthode statique via un pointeur null. Le code ci-dessous fonctionnera mais ne l'utilisez pas s'il vous plaît:)

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

Autres conseils

Oui, c'est précisément ce que statique signifie pour les membres de la classe:

struct Foo {
    static int x;
};

int Foo::x;

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

D'autre part, c'est à quoi servent les espaces de noms:

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

Les classes de fonctions statiques sont uniquement utilisées pour les classes de règles.

En bref, oui.

À long terme, un membre statique peut être appelé n'importe où, vous traitez simplement le nom de la classe comme un espace de noms.

class Something
{
   static int a;
};

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

Oui:

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

  static void fun2()
  {
    //
  }
  static int number = 0;
};
...
int main()
{
  mytoolbox::fun1();
  mytoolbox::number = 3;
  ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top