(Dengan asumsi lingkungan single-threaded)
Fungsi yang memenuhi kriteria ini adalah:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
Intinya, saya bisa memanggil fungsi ini beberapa kali dan tidak khawatir tentang hal itu menginisialisasi MyClass
beberapa kali
Fungsi yang tidak memenuhi kriteria ini mungkin:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
Memanggil initialize()
beberapa kali akan menyebabkan kebocoran memori
Motivasi
Akan menyenangkan untuk memiliki satu kata ringkas untuk menggambarkan perilaku ini sehingga fungsi yang diharapkan memenuhi kriteria ini dapat dikomentari dengan baik (terutama berguna saat menggambarkan fungsi antarmuka yang diharapkan akan ditimpa)