Cette question a été posée à moi dans une interview:
Qu'est ce qu'un constructeur statique?
Existe-t-elle en C++? Si oui, veuillez expliquer avec un exemple.
Cette question a été posée à moi dans une interview:
Qu'est ce qu'un constructeur statique?
Existe-t-elle en C++? Si oui, veuillez expliquer avec un exemple.
C++ n'ont pas de constructeurs statiques mais vous pouvez les imiter à l'aide d'une instance statique d'une classe imbriquée.
class has_static_constructor {
friend class constructor;
struct constructor {
constructor() { /* do some constructing here … */ }
};
static constructor cons;
};
// C++ needs to define static members externally.
has_static_constructor::constructor has_static_constructor::cons;
En C++, il n'y a pas de constructeur statique. En C# (et probablement en Java aussi), vous pouvez définir constructeur statique qui est appelée automatiquement par le moteur d'exécution de manière à initialiser les membres statiques.
Pour plus de question et de l'intérêt que vous pouvez lire à ce sujet:
Quelle est la justification pour ne pas avoir de constructeur statique en C++?
Comme nous n'avons pas techniquement avez constructeurs statiques en C++, vous devez décider si cela vaut la peine de faire quelque chose de difficile à forcer le problème (par exemple en utilisant une instance statique d'une classe imbriquée), ou juste un peu de restructurer votre code pour appeler un initialiseur statique au début de votre programme de vie.
// file Foo.h
class Foo
{
Foo ();
~Foo ();
static void init (void);
static string my_text_str;
}
// file Foo.cpp
Foo::init (void)
{
my_text_str = "I am set now";
}
// file main.cpp
int main ()
{
Foo::init ();
}
J'aime cette approche mieux, comme la doublure d'argent, il prend le non de la non-déterministe de l'initialisation.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.