2010-10-22 7 views
6

क्या मुख्य() निष्पादित होने से पहले भी कक्षा के किसी ऑब्जेक्ट को तुरंत चालू करना संभव है? यदि हां, तो मैं ऐसा कैसे करूं?मुख्य से पहले किसी वर्ग का इंस्टेंटिएट ऑब्जेक्ट() निष्पादित करता है

उत्तर

7

वैश्विक वस्तुओं को main() से पहले बुलाया जाता है।

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

कैसे काम करता है? निष्पादन मुख्य() पर शुरू नहीं होता है? क्या आप कुछ प्रकाश डाल सकते हैं? – Shree

+0

@Shree: संपादन देखें। वर्किंग कोड [यहां] (http://ideone.com/mKEB9) –

+3

@Shree: नहीं। वैश्विक (और कुछ अन्य) चर को 'मुख्य()' से पहले बनाया जाना चाहिए, क्योंकि उन्हें उपयोग करने योग्य होने की आवश्यकता है, मुख्य() 'शुरू होता है। इसलिए उनके रचनाकारों को 'मुख्य()' से पहले बुलाया जाना है। – sbi

5

हाँ, आप यह बहुत की तरह कर सकते हैं:

#include <iostream> 

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

X x; 

int main(int argc, char ** argv) { 
    std::cout << "main()\n"; 
} 
संबंधित मुद्दे