(Suponiendo un entorno de subproceso único)
Una función que cumple este criterio es:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
En esencia, puedo llamar a esta función varias veces y no preocuparme de que se inicialice MyClass
varias veces
Una función que no cumple este criterio podría ser:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
Llamar initialize()
varias veces provocará una pérdida de memoria
Motivación
Sería bueno tener una sola palabra concisa para describir este comportamiento para que las funciones que se espera que cumplan este criterio puedan ser debidamente comentadas (especialmente útil cuando se describen funciones de interfaz que se espera que se anulen)