TestObject getObject(){
TestObject a(5.0f);
return a;
}
int main(){
TestObject a = getObject();
}
क्या मैं यह कहकर सही हूं कि सी ++ में एक लौटे ऑब्जेक्ट में इसे नष्ट करने के रूप में बुलाया जाने वाला विनाशक नहीं होगा। क्या मेमोरी फंक्शन कॉल में ऑब्जेक्ट ले लिया गया है जो विनाशक को चलाने के बिना हटा दिया गया है?सी ++ ऑब्जेक्ट रिटर्न
ठीक एक विशिष्ट उदाहरण ..
#include <iostream>
class Test{
public:
Test(){};
~Test(){std::cout << "Goodbye cruel world\n";}
};
Test getAnObject(){
Test a;
return a;
}
int main(){
Test a = getAnObject();
}
यदि मैं यह नाशक चलाने सिर्फ एक बार चलाया जाता है (getAnObject में स्थानीय वस्तु के लिए नहीं())। क्या मुझे लगता है कि यह हमेशा मामला होगा?
#include <iostream>
class Test{
public:
Test(){};
~Test(){std::cout << "Goodbye cruel world\n";}
};
Test getAnObject(){
Test a;
Test b;
int i = 0;
if (i){
return a;
}else{
return b;
}
}
int main(){
Test a = getAnObject();
}
RVO गाइड इस परीक्षण getanobject में दोनों वस्तुओं पर नाशक रन है() और मुख्य कार्य में बाद। क्या यह एक ऐसा मामला है जहां मुझे निरंतर व्यवहार सुनिश्चित करने के लिए हमेशा तीन नियमों को लागू करना चाहिए?
getObject एक int वापस करने के लिए प्रोटोटाइप है ... एक testObject नहीं। – Max
मेरी गलती ओह। धन्यवाद। – Guest300000000