(En supposant un environnement mono-threadé)
Une fonction qui remplit ce critère est:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
En substance, je peux appeler cette fonction plusieurs fois et ne pas m'inquiéter de l'initialiser MyClass
plusieurs fois.
Une fonction qui ne remplit pas ce critère pourrait être:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
Appeler initialize()
plusieurs fois provoquera une fuite de mémoire
Motivation
Il serait bien d’avoir un seul mot concis pour décrire ce comportement afin que les fonctions censées répondre à ce critère puissent être dûment commentées (particulièrement utile lors de la description de fonctions d’interface censées être remplacées)