(Supponendo un ambiente a thread singolo)
Una funzione che soddisfa questo criterio è:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
In sostanza, posso chiamare questa funzione più volte e non preoccuparmi dell'inizializzazione MyClass
più volte
Una funzione che non soddisfa questo criterio potrebbe essere:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
La chiamata initialize()
più volte provoca una perdita di memoria
Motivazione
Sarebbe bello avere una sola parola concisa per descrivere questo comportamento in modo che le funzioni che dovrebbero soddisfare questo criterio possano essere debitamente commentate (particolarmente utili quando si descrivono funzioni di interfaccia che dovrebbero essere sovrascritte)