(Zakładając, że środowisko jednowątkowe)
Funkcja spełniająca to kryterium to:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
Zasadniczo mogę wywoływać tę funkcję wiele razy i nie martw się, że zainicjuje się MyClass
wiele razy
Funkcją niespełniającą tego kryterium może być:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
initialize()
Wielokrotne wywołanie spowoduje wyciek pamięci
Motywacja
Byłoby miło mieć jedno zwięzłe słowo opisujące to zachowanie, aby funkcje, które powinny spełniać to kryterium, mogły zostać należycie skomentowane (szczególnie przydatne przy opisywaniu funkcji interfejsu, które powinny zostać zastąpione)