एक संदर्भ भाषा स्तर पर एक अमूर्त है। यह एक परिवर्तनीय को दूसरे में अलियासिंग का एक अपारदर्शी तरीका है। हुड के तहत, कंपाइलर पॉइंटर्स का उपयोग करके संदर्भों को काम करने की संभावना है, वे उच्च स्तर पर बहुत अलग चीजें हैं। दूसरी तरफ, संकेतक प्राप्त करने के लिए पॉइंटर्स का उपयोग प्रोग्रामर द्वारा स्पष्ट रूप से किया जाता है। एक पॉइंटर वैरिएबल एक अलग चर है जो इसकी ओर इशारा करता है। एक संदर्भ को सोचा जाना चाहिए कि यह मूल चर के लिए केवल उपनाम है, ऐसा नहीं है कि यह एक और चर है जो एक पता है। नतीजतन, एक चर के उपनाम के लिए एक उपनाम केवल चर के लिए एक उपनाम होगा। एक चर के संदर्भ में बाध्यकारी को ध्यान में रखते हुए एक संकलन-समय की बात इस व्यवहार के पीछे तर्क को समझने में मदद कर सकती है।
इस तर्क के साथ, आप तर्क दे सकते हैं कि चूंकि सरणी संरचनाएं हैं जो मूल्यों को स्टोर करती हैं, वैरिएबल नहीं, यह उनके लिए चर के उपनामों को स्टोर करने में सक्षम नहीं होती है। असल में, एक संदर्भ चर (जिसका अर्थ है कि सूचक, यदि मौजूद है, तो संदर्भ को तार करने के लिए कंपाइलर द्वारा उपयोग किया जा सकता है) C++ स्तर पर प्रोग्रामर के लिए अदृश्य है। यदि संदर्भों के सरणी घोषित करना संभव था, तो संकलक को संकलन समय पर बाध्यकारी को हल करने में सक्षम होने के लिए सरणी को पारित निरंतर अनुक्रमणिका की आवश्यकता होती है।
स्रोत
2010-02-23 20:51:18
क्योंकि बजेर्न स्ट्रॉस्ट्रप ऐसा कहता है। –
संभावित डुप्लिकेट: http://stackoverflow.com/questions/1164266/why-arrays-of-references-are-illegal –
ऐसे उबाऊ जवाब। जवाब देने के बारे में कैसे मानक इसे अस्वीकार करता है? क्या कोई मौलिक कारण है कि सी ++ रिबाइंडिंग संदर्भों का समर्थन नहीं कर सकता है? –