2012-12-07 14 views
5

संभव डुप्लिकेट:
What is the scope of a while and for loop?संलग्न लूप चर के जीवनकाल और दायरे क्या है?

for (int32 segNo = 0; segNo < 10; ++segNo) 
{ 
    my_Object cm; 
} 

निर्माता और वस्तु सेमी की नाशक प्रत्येक पर बुलाया जाएगा पाश के माध्यम से पारित?

यदि हां, तो लूप चर के पहले या बाद में विनाशक को बुलाया जाएगा?

+0

@ bames53 आपका लिंक का उत्तर न मिले चर पूर्व या वेतन वृद्धि के बाद नष्ट हो जाता है या नहीं। –

उत्तर

5

ऑब्जेक्ट का जीवन उन घुंघराले ब्रेसिज़ के अंदर है।

डिफ़ॉल्ट कन्स्ट्रक्टर को आपके कोड के लाइन 3 पर कॉल किया जाता है। जब आप} पहुंचते हैं तो विनाशक को बुलाया जाएगा। फिर आपका लूप बढ़ता है, फिर सशर्त चेक किया जाता है। यदि यह सच हो जाता है तो एक और वस्तु बनाई जाती है (और कन्स्ट्रक्टर कहा जाता है)।

8

हां। और विनाशक वृद्धि से पहले कहा जाता है। मुझे पता है, संक्षिप्त जवाब, लेकिन यह है।

6
#include <iostream> 
struct Int { 
    int x; 
    Int(int value):x(value){} 
    bool operator<(int y)const{return x<y;} 
    void increment() { std::cout << "incremented to " << ++x << "\n";} 
}; 
struct Log { 
    Log() { std::cout << "Log created\n";} 
    ~Log() { std::cout << "Log destroyed\n";} 
}; 

int main() 
{ 
    for(Int i=0; i<3; i.increment()) 
    { 
     Log test; 
    } 
} 

परिणाम:

Log created 
Log destroyed 
incremented to 1 
Log created 
Log destroyed 
incremented to 2 
Log created 
Log destroyed 
incremented to 3 
+0

वाह! अपने प्रदर्शन कोड से सीखने के लिए कुछ साफ चालें! – pfabri