सी ++ समिति ने क्यों फैसला किया कि कॉन्स संदर्भों को अस्थायी जीवनकाल का विस्तार करना चाहिए?क्यों कॉन्स संदर्भ रावल के जीवनकाल का विस्तार करते हैं?
इस तथ्य को पहले से ही व्यापक रूप से ऑनलाइन चर्चा की गई है, जिसमें स्टैक ओवरफ्लो भी शामिल है।
GotW #88: A Candidate For the “Most Important const”
इस भाषा सुविधा के लिए तर्क क्या था: निश्चित संसाधन समझा कि यह मामला है शायद इस GoTW है? क्या यह ज्ञात है?
(वैकल्पिक होगा कि temporaries के जीवनकाल कोई संदर्भ द्वारा लागू नहीं होता।)
औचित्य के लिए मेरा अपना पालतू सिद्धांत है कि इस व्यवहार वस्तुओं कार्यान्वयन विवरण को छिपाने के लिए अनुमति देता है। इस नियम के साथ, एक सदस्य फ़ंक्शन क्लाइंट कोड में किए गए किसी भी बदलाव के बिना पहले से ही आंतरिक रूप से मौजूद मूल्य के मान या कॉन्स्ट संदर्भ को वापस करने के बीच स्विच कर सकता है। उदाहरण के लिए, एक मैट्रिक्स क्लास पंक्ति वैक्टर और कॉलम वैक्टर वापस करने में सक्षम हो सकती है। प्रतियों को कम करने के लिए, या तो एक या दूसरे को कार्यान्वयन (पंक्ति प्रमुख बनाम कॉलम प्रमुख) के आधार पर संदर्भ के रूप में वापस किया जा सकता है। जो भी संदर्भ द्वारा वापस नहीं किया जा सकता है उसे प्रतिलिपि बनाकर वापस लौटाया जाना चाहिए और उस मूल्य को वापस कर देना चाहिए (यदि लौटा वैक्टर सम्मिलित हैं)। लाइब्रेरी लेखक भविष्य में कार्यान्वयन को बदलने के लिए छूट ले सकता है (पंक्ति प्रमुख बनाम कॉलम प्रमुख) और ग्राहकों को कोड लिखने से रोकता है जो दृढ़ता से निर्भर करता है कि कार्यान्वयन पंक्ति प्रमुख या स्तंभ प्रमुख है या नहीं। क्लाइंट को कॉन्स्ट रेफ के रूप में रिटर्न वैल्यू स्वीकार करने के लिए कहकर, मैट्रिक्स क्लास क्लाइंट कोड में किसी भी बदलाव के बिना या तो कॉन्स रेफ या वैल्यू लौटा सकता है। भले ही, मूल तर्क ज्ञात है, मैं इसे जानना चाहता हूं।
मैट्रिक्स उदाहरण एक प्रॉक्सी वस्तु का उपयोग कर अधिक सुंदर ढंग से हल किया जा जाएगा। – 5gon12eder
आपको निश्चित उत्तर के लिए "सी ++ के डिजाइन और विकास" की जांच करनी होगी। लेकिन मुझे दृढ़ता से संदेह है कि इस प्रश्न का एक उद्देश्य जवाब है - व्यक्तिगत पालतू सिद्धांतों से कोई फर्क नहीं पड़ता। – MSalters
@ 5gon12eder मुझे लगता है कि आप जो सुझाव दे रहे हैं वह समाधान है जिसे मैं पूर्व-खाली करने की कोशिश कर रहा था, यह निर्धारित करके कि लौटा वेक्टर संगत होना चाहिए (किसी भी कारण से ...)। – Praxeolitic