(Припускаючи однопотокове середовище)
Функція, яка відповідає цьому критерію:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
По суті, я можу викликати цю функцію кілька разів і не турбуватися про її ініціалізацію MyClass
кілька разів
Функцією, яка не відповідає цьому критерію, може бути:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
initialize()
Багаторазовий дзвінок призведе до витоку пам'яті
Мотивація
Було б непогано мати одне стисле слово для опису такої поведінки, щоб функції, які, як очікується, відповідати цьому критерію, могли бути належним чином коментовані (особливо корисно при описі функцій інтерфейсу, які, як очікується, будуть замінені)