संभव डुप्लिकेट:
Does a const reference prolong the life of a temporary?अस्थायी वस्तु रिटर्निंग और स्थिरांक संदर्भ के लिए बाध्य
मेरे संकलक स्थिरांक संदर्भ के लिए अस्थायी बताए के बारे में शिकायत नहीं करता है:
string foo() {
return string("123");
};
int main() {
const string& val = foo();
printf("%s\n", val.c_str());
return 0;
}
क्यों ? मैंने सोचा कि foo
से लौटाई गई स्ट्रिंग अस्थायी है और वैल ऑब्जेक्ट को इंगित कर सकता है कि कौन सा जीवनकाल समाप्त हो गया है। क्या सी ++ मानक इसकी अनुमति देता है और लौटे ऑब्जेक्ट के जीवनकाल को बढ़ाता है?
हां, अस्थायी जीवनकाल लंबे समय तक लंबा है जब तक यह ** कॉन्स ** संदर्भ है। – chris
यह वास्तव में 2784262 का डुप्लिकेट नहीं है, जो (केस) उस मामले का इलाज करेगा जहां संदर्भ एक वर्ग सदस्य है। व्यवहार अलग है। – aberaud
@aberaud न केवल यह एक डुप्लिकेट है, यह एक बेहतर सवाल है जिसे मैंने पाया है। – dashesy