Membres statiques C ++ en classe
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
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;
...
}