मुझे आश्चर्य है कि स्थानीय ऑब्जेक्ट का const reference
क्यों लौटा रहा है, जबकि local object
लौटने पर कानूनी है जब तक आप इसे const reference
पर असाइन करते हैं?रिटर्न कॉन्स संदर्भ बनाम अस्थायी ऑब्जेक्ट
vector<int> f_legal() {
vector<int> tempVec;
tempVec.push_back(1);
return tempVec;
}
const vector<int>& f_illegal() {
vector<int> tempVec;
tempVec.push_back(1);
return tempVec;
}
void g() {
const vector<int>& v1 = f_legal(); // legal
const vector<int>& v2 = f_illegal(); // illegal
}
संपादित करें: मेरे मुद्दा यह है कि अगर एक लौटे स्थानीय चर के लिए एक स्थिरांक रेफरी बताए कानूनी है, तो एक स्थानीय चर के एक लौटे स्थिरांक रेफरी के लिए एक स्थिरांक रेफरी बताए नहीं करना चाहिए और साथ ही कानूनी हो रहा है?
@ एडी हील हां यह सी ++ में अच्छी तरह से परिभाषित है कि एक स्थानीय कॉन्स्ट संदर्भ एक अस्थायी जीवनकाल का विस्तार करेगा जिसमें यह बाध्य है। –
@EdHeal हाँ, यह कानूनी है। मानक में एक विशेष मामला है जो स्थानीय ऑब्जेक्ट को जीवित रखेगा जब तक कि मौजूदा दायरे में इसका कोई संदर्भ न हो। –