हां, int x = 1;
और int x(1);
प्रकारों में निर्मित के लिए समान हैं।
कक्षा प्रकार की वस्तुओं का निर्माण करते समय दो अलग-अलग प्रारंभिक वाक्यविन्यास संक्षेप में अलग होते हैं।
Obj x(y);
यह प्रत्यक्ष प्रारंभ है और एक स्पष्ट निर्माता कि y
लेता है, या कुछ और कि y
परोक्ष में बदला जा सकता को खोजने के लिए संकलक निर्देश देता है, और एक्स प्रारंभ करने में इस निर्माता का उपयोग करता है।
Obj x = y;
यह प्रतिलिपि प्रारंभ है और y
परिवर्तित करके एक अस्थायी Obj
बनाने के लिए संकलक निर्देश देता है और x
initalize को Obj
की प्रतिलिपि निर्माता का उपयोग करता है।
कॉपी initalizationप्रत्यक्ष प्रारंभ के बराबर है जब y
के प्रकार x
के प्रकार के रूप में ही है।
initalization प्रतिलिपि के लिए, क्योंकि अस्थायी प्रयुक्त एक अंतर्निहित रूपांतरण का परिणाम है, कंस्ट्रक्टर्स चिह्नित explicit
नहीं माना जाता। निर्मित प्रकार के लिए कॉपी कन्स्ट्रक्टर सुलभ होना चाहिए, लेकिन प्रतिलिपि को संकलक द्वारा ऑप्टिमाइज़ेशन के रूप में हटाया जा सकता है।
स्रोत
2009-10-03 06:38:38
डुपे: http://stackoverflow.com/questions/1051379/is-there-a-difference-in-c-between-copy-initialization-and-assignment-initializ –
बिल्कुल समान नहीं है। यह प्रश्न विशेष रूप से पीओडी के प्रारंभिकरण के बारे में प्रतीत होता है। – Boojum