Thursday 15 July 2010

c++ - Where are these parameters allocated -


इस छोटे प्रोग्राम को देखते हुए

  #include & lt; iostream & gt; कक्षा ए {सार्वजनिक: ए (इंट एन = 0): एम_आईट (एन) {} इंट एम_ंट; }; शून्य एफ (कॉन्स्ट ए और आरए, कॉन्स्ट ए और आर 2 = ए ()) {std :: cout & lt; & lt; Ra.m_int & lt; & lt; Ra2.m_int & lt; & lt; std :: endl; } Int main () {f (3); }   

आउटपुट 30 है। मैं समझता हूं कि एक ऑब्जेक्ट के लिए एक पूर्णांक का अंतर्निहित रूपांतरण। मेरा प्रश्न यह है कि कहां वस्तुओं हैं जिन्हें आरए और आरए 2 द्वारा संदर्भित किया गया है? यह स्पष्ट है कि वे आवंटित ढेर हैं लेकिन मुझे यकीन है कि करना चाहते हैं।

आउटपुट "30 "वास्तव में दो नंबर हैं," 3 "और" 0 "।

3 तर्क स्टैक से मिल गया है, और ए रचनाकार की प्रकृति के कारण परस्पर रूप से एक ऑब्जेक्ट में परिवर्तित हो जाता है।

0 रा 2 = ए () से मिल गया है। कंसट्रक्टर को भेजते समय, ए में कोई पैरामीटर नहीं होता है तो ए (इंट एन = 0) इंटर्न n = 0 के लिए डिफॉल्ट होता है। कन्स्ट्रक्टर खुद n (0) लेता है और 0 से m_int सेट करता है।

चूंकि कॉट को कॉनटेनेट करता है 3 और 0 एक साथ, यह 30 जैसा दिखता है।

आपके प्रश्न का उत्तर देने के लिए, वस्तुएं निहित रूप से बनाई गई हैं - यह मॉलोक के औपचारिक अर्थ में "आवंटित" नहीं है, बल्कि एक स्थानीय चर (जहां यह वास्तव में संग्रहीत है implentation-specific)

No comments:

Post a Comment