Initialization bei 'normalem' .cpp file.
-
Hoi zusammen.
Ich bin gerade bei einem Delphi file auf folgendes gestossen (das File ist KEINE Klasse);
initialization
mutexTKH := TMutex.Create('TKH_INSERTS_CODE');
sharedMemTKH := TSharedMem.Create('SHM_TKHINSERTS', sizeof(KitConvoierType));Sprich, sobald er die Unit reinlädt, wird dies ausgeführt.
Gibts das auch in cpp, ohne dass ich eine Klasse benutze und den Konstruktor ausführe?Gruss,
dane
-
Mhh, wie jetzt? So?
void machWas() {} int main() { machWas(); }
-
Hallo,
verstehe ich das richtig so:
Sobald ich irgendein header file includiere wird SOFORT der main() - Part beim entsprechenden .cpp File ausgeführt?Grz
-
Nein, das verstehst du falsch. Es gibt keinen 'Main-Part', es gibt nur eine einzige Main-Funktion und dort ist der Einstiegspunkt für das Programm.
Wenn du eine Funktion möglichst früh ausführen willst, dann muss die halt möglichst früh in der main-Funktion stehen (direkt oder indirekt).
Inkludieren musst du nur, um die Funktion bekannt zu machen.
-
Hoi,
Ja das ist mir klar.
Nur die ausführung vonmutexTKH := TMutex.Create('TKH_INSERTS_CODE'); sharedMemTKH := TSharedMem.Create('SHM_TKHINSERTS', sizeof(KitConvoierType));muss dann geschehen, wenn das ganze inkludiert wird.
So verstehe ich jedenfalls die Funktionsweise von initialization unter Delphi.gruss
-
dane_92 schrieb:
muss dann geschehen, wenn das ganze inkludiert wird.
In C++ kannst Du nix ausführen "wenn etwas inkludiert wird". Compiletime und Runtime sind 2 verschiedene Dinge. Wenn Du möchtest dass Code dann ausgeführt wird wenn eine Klasse verwendet wird, dann benutze den Constructor. Dafür ist er da.