(シングルスレッド環境を想定)
この基準を満たす関数は次のとおりです。
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()
複数回呼び出すと、メモリリークが発生します。
動機
この基準を満たすことが期待される関数に適切にコメントできるように、この動作を説明する簡潔な単語を1つ用意しておくとよいでしょう(特に、オーバーライドされると予想されるインターフェース関数を記述する場合に便利です)