के रूप में आप सही तरीके से अपने आप को कहा, वेक्टर उसके तत्वों के लिए कॉल विनाशकर्ता करता है। तो, आपके उदाहरण में वेक्टर "पॉइंटर्स के विनाशक" को कॉल करता है। हालांकि, आपको यह ध्यान रखना होगा कि पॉइंटर प्रकारों में कोई विनाशक नहीं है। केवल वर्ग के प्रकार में विनाशक हो सकते हैं। और पॉइंटर्स कक्षाएं नहीं हैं। तो, यह कहना सही है कि std::vector
वेक्टर में संग्रहीत सूचक वस्तुओं को छद्म-विनाशक कॉल वाक्यविन्यास लागू करता है। पॉइंटर प्रकारों के लिए जिसके परिणामस्वरूप कोई ऑपरेशन नहीं होता है, यानी यह कुछ भी नहीं करता है।
यह आपके प्रश्न के दूसरे भाग का भी उत्तर देता है: चाहे पॉइंटर्स द्वारा इंगित myclass
ऑब्जेक्ट्स नष्ट हो जाएं। नहीं, वे नष्ट नहीं हो जाते हैं।
इसके अलावा, ऐसा लगता है कि आप किसी भी तरह से मानते हैं कि "पॉइंटर्स पर विनाशकों को बुलावा" (आपके प्रश्न का पहला भाग) वही बात है जो "पॉइंट ऑब्जेक्ट्स को नष्ट कर रहा है" (आपके प्रश्न का दूसरा भाग)। हकीकत में ये दो पूरी तरह से अलग असंबंधित चीजें हैं।
पूर्व से बाद के लिंक को बनाने के लिए, यानी।वेक्टर को पॉइंट ऑब्जेक्ट्स को नष्ट करने के लिए, आपको सामान्य कच्चे myclass *
पॉइंटर्स के विपरीत, किसी भी तरह के "स्मार्ट पॉइंटर्स" से अपने वेक्टर बनाने की आवश्यकता है। वेक्टर स्वचालित रूप से "स्मार्ट पॉइंटर्स" के विनाशकों को बुलाएगा और इन विनाशकों, बदले में, बिंदुओं को नष्ट कर देगा। यह "लिंक" केवल "स्मार्ट पॉइंटर के" विनाशक के अंदर स्पष्ट रूप से कार्यान्वित किया जा सकता है, यही कारण है कि सामान्य कच्चे पॉइंटर्स आपकी मदद नहीं कर सकते हैं।
देखें [boost :: ptr_vector] (http://www.boost.org/doc/libs/1_49_0/libs/ptr_container/doc/ptr_vector.html) –