में फ़ंक्शन हटाएं मैंने फ़ंक्शन का उपयोग करने का एक उदाहरण देखा: सीपीपी में हटाएं और मैंने इसे पूरी तरह से समझ नहीं लिया। कोड है:सी ++
class Name {
const char* s;
//...
};
class Table {
Name* p;
size_t sz;
public:
Table(size_t s = 15){p = new Name[sz = s]; }
~Table { delete[] p; }
};
आदेश का सही कार्रवाई क्या है: delete[] p;
?
मुझे लगता है कि उद्देश्य कंटेनर तालिका में सभी पॉइंटर्स को हटाना था।
delete[]
में ब्रैकेट मुझे एक सुराग देते हैं कि यह नाम पर पॉइंटर्स की एक सरणी हटा देता है लेकिन सरणी का आकार निर्दिष्ट नहीं है, तो विनाशक कैसे जानता है कि कितने पॉइंटर्स को हटाना है?
संभावित डुप्लिकेट [हटाएं बनाम \ [\] ऑपरेटरों को सी ++ में हटाएं] (http://stackoverflow.com/questions/2425728/delete-vs-delete-operators-in-c) और [इसमें कैसे हटाया जाता है सी ++ जानते हैं कि कितने मेमोरी स्थानों को हटाना है] (http://stackoverflow.com/questions/2327848/how-does-the-delete-in-c-now-how-many-memory-locations-to-delete) –
" सभी पॉइंटर्स "- ध्यान दें कि 'तालिका' में केवल एक पॉइंटर होता है। यह 'नाम' की गतिशील रूप से आवंटित सरणी के लिए एक सूचक है, लेकिन केवल एक गतिशील रूप से बनाई गई वस्तु (सरणी) है जिसे हटाया जाना आवश्यक है। –