"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > विज़ुअल स्टूडियो 2010 गैर-कॉन्स्ट रेफ़रेंस बाइंडिंग को Rvalues ​​​​की अनुमति क्यों देता है?

विज़ुअल स्टूडियो 2010 गैर-कॉन्स्ट रेफ़रेंस बाइंडिंग को Rvalues ​​​​की अनुमति क्यों देता है?

2024-11-04 को प्रकाशित
ब्राउज़ करें:663

Why Does Visual Studio 2010 Allow Non-Const Reference Binding to Rvalues?

नॉन-कॉन्स्ट रेफरेंस बाइंडिंग को प्रतिमूल्य पर अनुमति देना: एक VS2010 विसंगति

सी मानक सख्ती से गैर-कॉन्स्ट संदर्भ को प्रतिमूल्य पर बाध्य करने से मना करता है। हालाँकि, एक अजीब विसंगति में, विज़ुअल स्टूडियो 2010 (SP1) निम्नलिखित कोड को बिना किसी त्रुटि या चेतावनी के संकलित करता है:

string foo() { return "hello"; }
int main() {
    string& tem = foo(); // Non-const reference to rvalue
}

वीएस2010 में यह असामान्य व्यवहार एक ज्ञात कंपाइलर एक्सटेंशन से उत्पन्न होता है। जीसीसी और विज़ुअल स्टूडियो 2008 के विपरीत, वीएस2010 कुछ मामलों में गैर-कॉन्स्ट संदर्भों को प्रतिद्वंद्विता से बंधे होने की अनुमति देता है, जैसे कि जब एक अस्थायी ऑब्जेक्ट लौटाने वाले फ़ंक्शन द्वारा प्रतिद्वंद्विता उत्पन्न होती है।

हालांकि यह एक्सटेंशन मानक की अवहेलना करता है, इसे संभवतः सुविधा के लिए लागू किया गया था। हालाँकि, यदि संदर्भ बाध्य होने के बाद प्रतिद्वंद्विता को संशोधित किया जाता है, तो यह अपरिभाषित व्यवहार का कारण बन सकता है। सी मानक के उचित पालन पर। इसलिए, वीएस2010 में भी, गैर-कॉन्स्ट संदर्भों को प्रतिमूल्यों से बांधने से बचने की दृढ़ता से अनुशंसा की जाती है। इसके बजाय, मानक के अनुसार, प्रतिमूल्यों से जुड़ते समय हमेशा कॉन्स्ट संदर्भों का उपयोग करें।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3