2013-03-18 6 views
5

मुझे आश्चर्य है कि क्या इस तरह इस कोड में c के रूप में संदर्भ चर:ढेर या ढेर पर संग्रहीत संदर्भ हैं?

int a = 5; 
int & c = a; 

ढेर या ढेर से आवंटित किए जाते हैं। क्या कोई मदद कर सकता है? धन्यवाद

+1

संदर्भ ऑब्जेक्ट नहीं है। –

+0

यह सब उत्तर देता है [सी ++ संदर्भ कैसे दिखता है, स्मृति-वार?] (Http://stackoverflow.com/a/38310081/6186415) –

उत्तर

13

एक संदर्भ केवल एक उपनाम है, और यह C++ 11 मानक द्वारा निर्दिष्ट नहीं है कि उसे वास्तविक संग्रहण की आवश्यकता है या नहीं।

प्रति पैरा सी ++ 11 स्टैंडर्ड की 8.3.2/4

:

यह अनिर्दिष्ट है या नहीं, एक संदर्भ भंडारण (3.7) की आवश्यकता है।

+0

तो, आपका मतलब है कि उत्तर अज्ञात है? –

+0

@ YasinRazlık: मैं नहीं बल्कि कह सकते हैं कि इस सवाल का जवाब अप्रासंगिक है। और ज्यादातर मामलों में मेरा मानना ​​है कि कोई भंडारण बिल्कुल आवंटित किया जाएगा: एक संदर्भ सिर्फ एक उपनाम है, न कि एक चर है कि एक स्मृति पता (एक सूचक की तरह) रखती है। –

+1

@ यासीनराज़लिक जवाब जो इससे कोई फर्क नहीं पड़ता। – juanchopanza

4

संदर्भ केवल उपनाम हैं और विशेष रूप से कहीं भी आवंटित नहीं किए जाने चाहिए। मानक इस तरह के विस्तार को उस बिंदु तक निर्दिष्ट नहीं करता है, जहां यह भी आवश्यक नहीं है कि संदर्भों में कोई भंडारण है।

2

कोई फर्क नहीं पड़ता, एक संदर्भ सूचक अंकगणित के बिना और एक अशक्त या अनिश्चित मूल्य के विकल्प के बिना सिर्फ एक निरंतर को स्वचालित रूप से संदर्भित सूचक है।

फिर से तैयार प्रश्न के बारे में - जिस तरह से संदर्भ इस्तेमाल किया जा रहा तात्पर्य वे अधिकतर आवंटित ढेर कर दिया जाएगा। यह सभी गैर स्थैतिक परिदृश्यों में है, जहां उनके भंडारण को छोड़ा नहीं जा सकता है। और वह सी ++ है, जो एक उच्च प्रदर्शन प्रोग्रामिंग भाषा है, जो किसी भी चीज को छोड़ देता है जिसका उपयोग नहीं किया जा रहा है।

0

सबसे compilers प्रतिबंधित संकेत के रूप में संदर्भ पर विचार करें।

संबंधित मुद्दे