2010-10-22 10 views

Antwort

7

Globale Objekte werden erstellt, bevor main() aufgerufen wird.

struct ABC { 

    ABC() { 
     std::cout << "In the constructor\n"; 
    } 
}; 

ABC s; // calls the constructor 

int main() 
{ 

    std::cout << "I am in main now\n"; 
} 
+0

Wie funktionierts? Beginnt die Ausführung nicht bei main()? Kannst du etwas Licht werfen? – Shree

+0

@Shree: Überprüfen Sie die Änderungen. Arbeitscode [hier] (http://ideone.com/mKEB9) –

+3

@Shree: Nein. Globale (und einige andere) Variablen müssen vor 'main()' erstellt werden, da sie bei Verwendung von 'benötigt werden main() 'beginnt. Also müssen ihre Konstruktoren vor 'main()' aufgerufen werden. – sbi

5

Ja, können Sie es tun, wie so:

#include <iostream> 

struct X { 
    X() { std::cout << "X()\n"; } 
}; 

X x; 

int main(int argc, char ** argv) { 
    std::cout << "main()\n"; 
} 
Verwandte Themen