सी ++ auto_ptr में दो प्रति रचनाकार और दो असाइनमेंट ऑपरेटर क्यों हैं लेकिन एक डिफ़ॉल्ट कन्स्ट्रक्टर?
ऐसा नहीं है।
यह 1 डिफ़ॉल्ट निर्माता (एक निर्माता कि 0 तर्क लेता है)
explicit auto_ptr (T* ptr = 0) throw()
है यह है 1 प्रतिलिपि निर्माता (एक निर्माता है कि एक ही प्रकार के एक वस्तु से एक प्रतिलिपि बनाता है)
auto_ptr (auto_ptr& rhs) throw()
इसमें 1 असाइनमेंट ऑपरेटर है जिसका उपयोग उसी प्रकार की ऑब्जेक्ट्स को असाइन करने के लिए किया जाता है।
auto_ptr& operator= (auto_ptr& rhs) throw()
यह एक फैंसी टेम्प्लेट की निर्माता है कि अन्य प्रकार के auto_ptr लेता है (यह एक प्रति निर्माता यह किसी सामान्य निर्माता है (हालांकि यह टेम्प्लेटेड है नहीं है))।
template<class Y>
auto_ptr (auto_ptr<Y>& rhs) throw()
यह एक और असाइनमेंट ऑपरेटर कि ऑटो सूचक के विभिन्न प्रकार लेता है (तो हाँ यह एक और असाइनमेंट ऑपरेटर है, लेकिन यह एक प्रति असाइनमेंट ऑपरेटर (लेकिन एक रूपांतरण असाइनमेंट ऑपरेटर) आरएचएस के रूप में एक अलग प्रकार का है नहीं है) ।
template<class Y>
auto_ptr& operator= (auto_ptr<Y>& rhs) throw()
स्रोत
2010-11-29 20:13:59
विरासत टेम्पलेट का उपयोग करने का एक बेहतर उदाहरण बनाता है, लेकिन यह सीवी मतभेदों पर भी लागू होता है। –
@ फ्रेड, हां, विरासत अधिक आम मामला है, लेकिन कम संक्षिप्त उदाहरण के लिए बनाता है। – Eclipse
ऐसा लगता है कि एफ 4 घोषणा रेखा में दो चीजें खो गईं, क्या आपका मतलब auto_ptr f4 = new foo() है? –