(Unter der Annahme einer Umgebung mit einem Thread)
Eine Funktion, die dieses Kriterium erfüllt, ist:
bool MyClass::is_initialized = false;
void MyClass::lazy_initialize()
{
if (!is_initialized)
{
initialize(); //Should not be called multiple times
is_initialized = true;
}
}
Im Wesentlichen kann ich diese Funktion mehrmals aufrufen und muss mir keine Sorgen machen, dass sie MyClass
mehrmals initialisiert wird
Eine Funktion, die dieses Kriterium nicht erfüllt, kann sein:
Foo* MyClass::ptr = NULL;
void initialize()
{
ptr = new Foo();
}
Ein initialize()
mehrmaliger Aufruf führt zu einem Speicherverlust
Motivation
Es wäre schön, ein einziges prägnantes Wort zur Beschreibung dieses Verhaltens zu haben, damit Funktionen, von denen erwartet wird, dass sie dieses Kriterium erfüllen, ordnungsgemäß kommentiert werden können (besonders nützlich bei der Beschreibung von Schnittstellenfunktionen, von denen erwartet wird, dass sie überschrieben werden).