कॉपी इस कार्यक्रमसी ++ कॉपी निर्माता, temporaries और शब्दों को
#include <iostream>
using std::cout;
struct C
{
C() { cout << "Default C called!\n"; }
C(const C &rhs) { cout << "CC called!\n"; }
};
const C f()
{
cout << "Entered f()!\n";
return C();
}
int main()
{
C a = f();
C b = a;
return 0;
}
उत्पादन मैं मिलता है के लिए:
Entered f()!
Default C called!
CC called!
f()
के बाद से मूल्य से लौटा रहा है, यह एक अस्थायी लौटना चाहिए। T a = x;
रूप T a(x);
है, यह अस्थायी साथ, a
के निर्माण के लिए प्रति निर्माता फोन नहीं होगा पारित कर दिया-अपने तर्क के रूप में?
मैं जीसीसी का उपयोग करता हूं, और '-फनो-एलिइड-कन्स्ट्रक्टर' के साथ यह दिखाता है कि हुड के नीचे क्या हो रहा है! कभी-कभी ये अनुकूलन एक शिक्षार्थी को बहुत भ्रमित करते हैं :) हालांकि, मैं मानता हूं कि उन्हें डिफ़ॉल्ट रूप से चालू होना चाहिए, फिर से एक अनौपचारिक व्यक्ति का निर्माण डिफ़ॉल्ट रूप से अनुकूलित किया जाएगा। – legends2k
@ किंवदंतियों 2k: आरवीओ उपयोगकर्ताओं के सनकी के लिए छोड़ने के लिए बहुत उपयोगी है।इसके अलावा, यह बहुत कम उदाहरणों में से एक है जहां मानक अनुकूलन की अनुमति देता है। यह पुन: उत्साहित करता है कि यह क्यों छोड़ा गया है। हालांकि, ध्यान दें कि यह सामान्य रूप से अन्य अनुकूलन के बारे में सच नहीं है। – dirkgently
सहमत, बिंदु ले लिया। विकी लिंक के लिए – legends2k