(Tek iş parçacıklı bir ortam varsayarak)
Bu kriteri yerine getiren bir fonksiyon:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
Temelde, bu işlevi birçok kez çağırabilirim ve MyClass
birçok kez başlatma konusunda endişelenmeyin.
Bu kriteri yerine getirmeyen bir işlev olabilir:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
initialize()
Birden çok kez arama yapmak , bellek sızıntısına neden olur
Motivasyon
Bu davranışı tanımlamak için tek bir özlü kelimeye sahip olmak güzel olurdu, böylece bu kriteri yerine getirmesi beklenen fonksiyonlar usulüne göre yorumlanabilir (özellikle geçersiz kılınması beklenen arayüz fonksiyonlarını tanımlarken kullanışlıdır).