Nicht lokale statische Variablen und ihre Konflikte
-
Hallo zusammen,
ich beschäftige mich momentan mit den Grundlagen der C++ Programmiersprache und habe gelesen, dass die Initialisierung von nicht lokalen statischen Variablen nicht deterministisch ist. Dazu habe ich folgende Lösung gefunden:
http://de.wikibooks.org/wiki/C%2B%2B-Programmierung/_N%C3%BCtzliches/_Lebensdauer_und_Sichtbarkeit_von_Objekten#Probleme_mit_der_InitialisierungEigentlich habe ich die Lösung verstanden, mir ist aber nicht klar wieso die Definition
B& b(){ static B _b(5); // Initialisierung beim ersten Aufruf return _b; }in der file1.cpp steht und die Deklaration in der file2.cpp steht.
B& b(); // Deklaration der Funktion bHabt ihr vielleicht eine Idee dazu?
Viele Grüße,
gallagher
-
Daß zu einem Objekt (nicht im OOP-Sinne) genau eine Definition existieren darf, sollte eigentlich klar sein. In diesem Fall hast du in der file1.cpp die Definition der Funktion b() und in allen anderen Dateien eine Forward-Deklaration auf diese Funktion (normalerweise macht man das nicht von Hand, sondern mit einem Header, der überall eingebunden wird).