मान लीजिए आप इस तरह की एक कार्य होते हैं:सी ++ क्या कॉपी कन्स्ट्रक्टर यहां बुलाया गया है?
Foo foo() {
Foo foo;
// more lines of code
return foo; // is the copy constructor called here?
}
Foo bar() {
// more lines of code
return Foo(); // is the copy constructor called here?
}
int main() {
Foo a = foo();
Foo b = bar();
}
जब किसी भी कार्य के लौटने के लिए, प्रतिलिपि निर्माता कहा जाता है (लगता है वहाँ एक होगा)?
"मान लीजिए कि एक होगा" का क्या मतलब है? प्रत्येक वर्ग में एक कॉपी कन्स्ट्रक्टर होता है (हालांकि यह 'निजी 'हो सकता है, या सी ++ 0x' delete'd में)। यदि कक्षा एक घोषित नहीं करती है, तो यह एक निहित रूप से घोषित प्रतिलिपि बनाता है। – aschepler
यह भी देखें http://stackoverflow.com/questions/665825/copy-constructor-vs-return-value-optimization – xtofl
इस तरह कुछ परीक्षण करना आसान है। बस एक कॉपी कन्स्ट्रक्टर को लागू करें और इसमें एक संदेश प्रिंट करें। – gregg