यह F~
आउटपुट लेकिन मैं ~F
सबसे महत्वपूर्ण आधार नहीं .. लेकिन यह क्या है?
#include <iostream>
struct Foo {
int _x;
operator const int &() const {return _x;}
~ Foo() {std :: cout << "~";}
};
void foo (const int &)
{
std :: cout << "F";
}
int main()
{
foo (Foo());
}
उम्मीद कर रहा था मैं दिखाने के लिए कि सबसे महत्वपूर्ण-स्थिरांक के बजाय एक अपवाद एक नियम है प्रति एक के रूप में इस का निर्माण किया। यह सामान्य रूप से, के रूप में
जब एक स्थिरांक संदर्भ एक अस्थायी है, तो उस अस्थायी के जीवनकाल को बांधता संदर्भ
मुझे लगता है कि वर्णन करने के लिए कोशिश कर रहा था के जीवनकाल के लिए बढ़ा दिया गया है लिखा है, हालांकि Foo()
है एक अस्थायी, रूपांतरण ऑपरेटर द्वारा लौटा _x
का संदर्भ नहीं है, और उपर्युक्त कोड असुरक्षित है।
लेकिन उत्पादन साबित होता है कि उदाहरण के सुरक्षित है लगता है, अस्थायी Foo()
के जीवनकाल अपने सदस्यों में से एक के लिए एक स्थिरांक संदर्भ के अस्तित्व के लिए बढ़ा दी है।
क्या यह सही है? मानक में कहां निर्दिष्ट है?
संदर्भ रिटर्निंग अधिक बार एक अच्छा एक से एक बुरा विचार है। यह इस तरह का एक अच्छा उदाहरण है। –
@ आर। मार्टिनिन्हो फर्नांडीस तो आप 'ऑपरेटर []' के रूप में घोषित करते हैं ...? – curiousguy