(假设是单线程环境)
满足此条件的功能是:
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()
多次调用将导致内存泄漏
动机
最好有一个简洁的词来描述此行为,以便可以适当地注释预期符合此条件的功能(在描述预期被覆盖的接口功能时特别有用)