2012-04-10 13 views
7

मान लें कि मेरे पास एक ऑब्जेक्ट को इंगित करने वाले दो पॉइंटर्स के साथ एक संरचना है जिसमें एक कार्यान्वित विनाशक है। इसके अलावा मान लेते हैं कि एक Listnode संरचना करने के लिए सिर अंक अरिक्त मूल्य * छात्र और * अगले है:संरचना के पॉइंटर को हटाने से संरचना के भीतर पॉइंटर्स भी हटाए जाएंगे?

struct Listnode {  
    Student *student; 
    Listnode *next; 
}; 
Listnode *head = new Listnode; 

अगर मैं Listnode सूचक 'सिर' पर delete आरक्षित शब्द का उपयोग यह भीतर विनाशकर्ता कॉल करेंगे वह छात्र वर्ग और लिस्टनोड वर्ग जो 'छात्र' और 'अगली' बिंदु-क्रमशः क्रमशः संरचना करता है। दूसरे शब्दों में, * हटाएगा * सिर भी हटाएगा * छात्र और * अगला मुहैया कराया गया वह हेड लिनोड

उत्तर

10

जब तक कि आपके विनाशक ~Listnode पॉइंटर्स पर delete पर कॉल न करें। कॉलिंग delete, हालांकि, गैर-सूचक सदस्यों के विनाशकों का आह्वान करेगा।

+0

तो क्या आप संरचना के लिए विनाशक को कार्यान्वित कर सकते हैं? –

+2

@PatMurray बिल्कुल! आप कक्षा में जो भी कर सकते हैं, आप भी 'स्ट्रक्चर' में कर सकते हैं। वास्तव में, केवल अंतर यह है कि प्रथम पहुंच घोषणा (सार्वजनिक, निजी, या संरक्षित) से पहले कक्षा के सदस्य निजी मानते हैं, जबकि एक ही संरचना के सदस्यों को सार्वजनिक माना जाता है। – dasblinkenlight

+0

स्ट्रक्चर कक्षाओं की तरह उत्तराधिकारी हो सकते हैं, और डिफ़ॉल्ट विरासत का उपयोग कक्षाओं के लिए संरचना और निजी के लिए सार्वजनिक है। एक और अंतर, लेकिन एक ही लाइन के साथ। – MSalters

1

नहीं! आपको उन्हें पहले मैन्युअल रूप से हटा देना चाहिए, लेकिन आप विध्वंसक विधि में डिलीट कोड भी जोड़ सकते हैं।

संबंधित मुद्दे