पुस्तक जेनेरिक प्रोग्रामिंग और एसटीएल (चीनी संस्करण) में, यह कहते हैं:कन्स्ट्रक्टर या कॉपी कन्स्ट्रक्टर?
X x = X()
प्रतिलिपि निर्माता कॉल करेंगे।
यह थोड़ा मुझे अजीब लगता है। और मैं इस परीक्षा
#include <iostream>
class Test {
public:
Test() {
std::cout << "This is ctor\n";
}
Test(const Test&) {
std::cout << "This is copy-ctor\n";
}
};
int main(int argc, char** argv)
{
Test t = Test();
return 0;
}
आउटपुट "यह सीटीओआर" है। ठीक है, अब मैं उलझन में हूँ, जो सही है?
जीसीसी में, आपको '-फनो-एलिइड-कन्स्ट्रक्टर' का उपयोग करना पड़ सकता है, क्योंकि '-O0' भी elision को रोकता नहीं है, मुझे लगता है। –
@Kerrek: धन्यवाद! –
प्रतिलिपि elided जा सकती है, तब भी जब यह * तुच्छ * नहीं है, प्रतिलिपि स्थानीय चर के स्थान पर अस्थायी निर्माण करके elided है। ऑब्जेक्ट या प्रतिलिपि की जटिलता उस अनुकूलन के लिए अप्रासंगिक है। –