J'ai le code suivant:C++ membres statiques
void Foo() {
static std::vector<int>(3);
// Vector object is constructed every function call
// The destructor of the static vector is invoked at
// this point (the debugger shows so)
// <-------------------
int a;
}
Ensuite, quelque part j'appelle Foo
plusieurs fois dans une séquence
Pourquoi l'objet vectoriel se construit sur chaque appel Foo()
et pourquoi est destructeur appelé juste après static ...
déclaration?
Mise à jour:
je tentais de mettre en œuvre la fonction une fois appeler mécanisme et je pensais que l'écriture quelque chose comme
static core::CallOnce(parameters)
où CallOnce
est un nom de classe serait très agréable.
À mon avis, écrire static core::CallOnce call_once(parameters)
semble pire, mais d'accord, c'est le cas je ne peux rien faire avec.
Merci.
Pourquoi cela a-t-il été baissé instantanément? –
@Michael: Bonne question. Doit trouver celui qui maintient downvoting sans laisser un commentaire flippant! C'est ce qu'ils sont pour! (Oh, et +1) –
@James Savez-vous par hasard, pourquoi cela arrive-t-il? Pourquoi un objet sans nom, qui fonctionne dans le constructeur, ne peut-il pas être une variable statique "normale" et ne pas être détruit par construction? –