संभव डुप्लिकेट:कॉपी निर्माता
#include <iostream> using namespace std; class sample { private: int x; public: sample(int a=0) : x(a) { cout << "default ctor invoked\n"; } sample(const sample& obj) { cout << "copy ctor invoked\n"; } }; int main() { sample s2 = sample(20); //Line1 sample s3 = 20; //Line2 return 0; }
Line1
में, पहलीsample
वर्ग के निर्माता शुरू हो जाती है:
Why copy constructor is not called in this case?
नीचे दिए गए नमूना कार्यक्रम पर विचार करें तर्क के साथ explicitly
20. फिर मुझे उम्मीद थी एस 2 शुरू करने के लिए नकल कन्स्ट्रक्टर को बुलाया जाएगा।
लाइन 2 में, पहले sample
वर्ग के निर्माता को implicitly
पहले तर्क 20 के साथ बुलाया गया है। यहां भी मुझे उम्मीद है कि प्रतिलिपि बनाने के लिए कॉपी कन्स्ट्रक्टर को बुलाया जाएगा।
दोनों मामलों में, कॉपी कन्स्ट्रक्टर का आह्वान नहीं किया जाता है? ये क्यों हो रहा है? मेरा मानना है कि कॉपी कन्स्ट्रक्टर के आविष्कार की मेरी समझ में कुछ गड़बड़ है। क्या कोई मुझे सही कर सकता है जहां मैं गलत हो रहा हूं?
यह अपेक्षित है - मुझे एक अच्छा उदाहरण खोजने की कोशिश करें और –
कॉपी कन्स्ट्रक्टर को कॉल कुछ स्थितियों में elided किया जा सकता है। –
@ आर। मार्टिन्होफर्नैंड्स: हां कुछ स्थितियां। लेकिन एस 2 और एस 3 को कुछ तरीकों से शुरू किया जाना है। प्रतिलिपि ctor कॉल किए बिना यह कैसे किया जाता है? –