पर पॉइंटर को हटाने से मेरे पास कॉन्स्ट पॉइंटर्स के बारे में एक बुनियादी सवाल है। मुझे किसी कॉन्स पॉइंटर का उपयोग करके किसी गैर-कॉन्स्ट सदस्य फ़ंक्शन को कॉल करने की अनुमति नहीं है। हालांकि, मैं एक स्थिरांक सूचक पर ऐसा करने की अनुमति हूँ:कॉन्स (टी कॉन्स *)
delete p;
इस वर्ग के जो सार में एक गैर-स्थिरांक 'विधि' है की नाशक कॉल करेंगे। इसकी अनुमति क्यों है? क्या यह सिर्फ इसका समर्थन करने के लिए है:
delete this;
या क्या कोई अन्य कारण है?
// dynamically create object that cannot be changed
const Foo * f = new Foo;
// use const member functions here
// delete it
delete f;
लेकिन ध्यान दें कि समस्या ही सीमित नहीं है डायनामिक रूप से तैयार करने के लिए वस्तुओं:
{
const Foo f;
// use it
} // destructor called here
स्थिरांक वस्तुओं विनाशकर्ता स्थिरांक वस्तुओं पर नहीं कहा जा सकता है, तो हम उपयोग नहीं कर सका
+1। मुझे लगता है कि यह सच कारण है। कॉन्स ऑब्जेक्ट के लिए स्वचालित विनाशक कॉल - लगभग एफ को हटाने के समान; जहां कॉन्स पर एफ - सूचक। – bayda