Const References के साथ Rvalues को संरक्षित करना: A C पहेली
C में, सामान्य संदर्भों के विपरीत, कॉन्स्ट संदर्भ द्वारा Rvalues (अस्थायी वस्तुओं) को पास करने की अनुमति है . निम्नलिखित प्रोग्राम पर विचार करें:
void display(const int& a) { cout प्रोग्राम डिस्प्ले फ़ंक्शन में लैवल्यू और रेवैल्यू दोनों को पास करने की अनुमति देता है, भले ही संदर्भ को कॉन्स्ट के रूप में चिह्नित किया गया हो। यह व्यवहार हैरान करने वाला है, क्योंकि कॉन्स्ट संदर्भ आम तौर पर अंतराल के संरक्षण से जुड़े होते हैं।
कॉन्स्ट रेफरेंस लाइफटाइम एक्सटेंशन
इस व्यवहार को समझने की कुंजी शब्दार्थ में निहित है सी में स्थिरांक संदर्भ की। एक स्थिरांक संदर्भ निर्दिष्ट दायरे के अंत तक संदर्भित वस्तु के जीवनकाल को बढ़ाता है। प्रतिद्वंद्विता के मामले में, यह अस्थायी वस्तु के विनाश को प्रभावी ढंग से रोकता है जब तक कि स्थिरांक संदर्भ दायरे से बाहर न हो जाए। उदाहरण के लिए, जब डिस्प्ले(5) को कॉल किया जाता है तो निम्न होता है:
मान के साथ int प्रकार का एक प्रतिद्वंद्विता बनाई जाती है 5.
एक कॉन्स्ट रेफरेंस ए इस प्रतिद्वंद्विता से जुड़ा है।कॉन्स्ट संदर्भ डिस्प्ले फ़ंक्शन के अंत तक प्रतिद्वंद्विता के जीवनकाल को बढ़ाता है।- प्रतिद्वंद्विता है मान 5 को प्रिंट करने के लिए फ़ंक्शन के भीतर उपयोग किया जाता है। नष्ट कर दिया गया।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3