मैं एक टेम्पलेट वर्ग लिख रहा हूं जो आंतरिक रूप से दिए गए प्रकार की सरणी का प्रबंधन करता है। इस तरह:हटाता है [] कॉल विनाशक?
template<typename T>
class Example {
// ...
private:
T* objects; // allocated in c'tor (array), deleted in d'tor
// ...
};
मैं अगर सी ++ objects
में प्रत्येक वस्तु के नाशक कॉल जब मैं यह delete[] objects;
के माध्यम से हटाना सोच रहा था।
मुझे यह जानने की ज़रूरत है, क्योंकि मेरी कक्षा में वस्तुओं में हर समय समझदार मूल्य नहीं होते हैं, इसलिए विनाशकों को तब नहीं कहा जाना चाहिए जब वे नहीं करते हैं।
इसके अतिरिक्त, अगर मैं Example<T>
के हिस्से के रूप में T objects[100]
जैसे निश्चित आकार के सरणी घोषित करता हूं तो मैं जानना चाहूंगा कि विनाशकों को बुलाया जाएगा या नहीं।
"क्योंकि मेरी कक्षा में वस्तुओं में हर समय समझदार मूल्य नहीं होते हैं" यह वर्ग टूटा हुआ लगता है। –
कक्षा एक संग्रह है जो समय से पहले स्मृति आवंटित करता है, जिसका उपयोग हमेशा नहीं किया जाता है। मुझे उस स्थान को NULL के साथ भरने की आवश्यकता नहीं है क्योंकि कक्षा पहले ही जानता है कि कौन से तत्व उपयोग में हैं और जो नहीं हैं। – Mixthos
यदि 'नया []' कन्स्ट्रक्टर कॉल करता है तो यह विनाशकों को कॉल करने के लिए 'हटाएं []' के लिए केवल तार्किक है। यह केवल तार्किक है। – dtech