// Destructor. If there is a C object, delete it.
// We don't need to test ptr_ == NULL because C++ does that for us
~scoped_ptr() {
enum { type_must_be_complete = sizeof(C) };
delete ptr_;
}
नोट: सी टेम्पलेट पैरामीटरविनाशक के लिए यह enum क्या है?
मैं जानता हूँ कि हम नहीं कर सकते एक अशक्त सूचक को हटाना है, एक अपवाद बढ़ा दी जाएगी। इसलिए इस मामले में, enum परिभाषा को रोकने के लिए कुछ करना चाहिए। उत्पादन में, कभी-कभी हम एक प्रोग्राम को सरल नहीं करना चाहते हैं क्योंकि हमारे पास शून्य सूचक है, हम वैकल्पिक परिदृश्य को देखना चाहेंगे, जब सूचक शून्य हो। और इस कोड का उत्पादन लगभग हर जगह उत्पादन में किया जाता है?
धन्यवाद दोस्तों।
हम एक नल पॉइंटर यह पूरी तरह ऐसा करने के लिए मान्य है हटा सकते हैं। –
मुझे लगता है कि मेरी समस्या पॉइंटर्स के डबल हटाने के साथ उलझन में थी। संकलक द्वारा डबल विलोपन का पता लगाया जाता है जब यह हमेशा एक अपवाद उठाता है। तो एक शून्य सूचक और डबल हटाने के बीच क्या अंतर है? – maress
@maress: आप जितनी बार चाहें उतनी बार एक नल पॉइंटर को "हटाएं" कर सकते हैं (या वास्तव में, आप इसे हटाने का प्रयास कर सकते हैं, रनटाइम शून्य सूचक का पता लगाएगा और कुछ भी नहीं करेगा) – rjnilsson