पर "स्वामित्व, सूत्रों का कहना है, और सिंक" यह site कहता है:क्या इन दो स्रोतों के बीच `auto_ptr` टेम्पलेट वर्ग के बारे में कोई विरोधाभास है?
"जब आप एक auto_ptr
कॉपी, आप स्वचालित रूप से स्वामित्व स्रोत auto_ptr
से लक्ष्य auto_ptr
में स्थानांतरण; लक्ष्य auto_ptr
पहले से ही एक वस्तु का मालिक है, तो , उस ऑब्जेक्ट को पहले से मुक्त किया गया है। प्रतिलिपि के बाद, केवल लक्ष्य auto_ptr
पॉइंटर का मालिक है और इसे उचित समय में हटा देगा, जबकि स्रोत को शून्य स्थिति में वापस सेट किया जाएगा और अब स्वामित्व वाली ऑब्जेक्ट को संदर्भित करने के लिए उपयोग नहीं किया जा सकता है। "।
अब, templacte<classX> class auto_ptr
के लिए operator=()
की परिभाषा पर विचार अध्याय 14 में Stroustrup के सी ++ प्रोग्रामिंग भाषा तीसरा संस्करण के पेज 368:
auto_ptr& operator=(auto_ptr& a) throw() { ptr = a.ptr; a.ptr = 0; }
मैं ऑपरेटर वस्तु को मुक्त नहीं देख सकते हैं द्वारा ptr != 0
पर संबोधित!
कुछ और संदिग्ध: कि 'ऑपरेटर =' कुछ भी वापस नहीं कर रहा है। – Mat
@ एसबीआई सी ++ प्रोग्रामिंग भाषा तीसरा संस्करण – Belloc
'ptr' का प्रकार क्या है? क्या वह 'क्लासएक्स * 'या' auto_ptr_guts 'है? यदि यह उत्तरार्द्ध है, तो ऊपर दिया गया कोड काफी छोटा होगा। –
MSalters