सी और सी + + प्रोग्रामिंग संसाधन

साझा / बुकमार्क
कस्टम खोज

सी में + + destructors

10 वीं पर पोस्ट सितम्बर, 2008

एक निर्माता के रूप में करने का विरोध किया, एक नाशक कहा जाता है जब एक कार्यक्रम में एक वस्तु का एक उदाहरण का उपयोग कर समाप्त हो गया है. एक नाशक पर्दे के पीछे की सफाई करता है. डिफ़ॉल्ट निर्माता की तरह, हमेशा एक संकलक डिफ़ॉल्ट नाशक बनाने के लिए यदि आप एक नहीं बना सकता. डिफ़ॉल्ट निर्माता की तरह, एक नाशक भी अपनी वस्तु के रूप में एक ही नाम है. इस बार, नाशक के नाम के साथ शुरू होता है
एक टिल्ड.

अपना स्वयं का नाशक हेडर फाइल में, बनाने, प्रकार ~ वस्तु के नाम से पीछा किया. यहाँ एक उदाहरण है:

  # Ifndef BricksH
 # BricksH परिभाषित

 वर्ग TBrick
 (
 सार्वजनिक:
      TBrick ();
      TBrick (डबल एल, डबल ज, डबल टी);
      TBrick (const TBrick और Brk);
     ~ TBrick ();
     डबल getLength () const;
     शून्य setLength (const डबल एल);
     डबल getHeight () const;
     शून्य setHeight (const डबल ज);
     डबल getThickness () const;
     शून्य setThickness (const डबल टी);
     डबल CementVolume ();
     ShowProperties () शून्य;
 निजी:
     डबल लम्बाई;
     डबल ऊँचाई;
     दोहरी मोटाई;
 );

 # Endif 

के रूप में एक डिफ़ॉल्ट निर्माता के साथ किया, तो आप एक नाशक के कार्यान्वयन में कुछ भी डालने की आवश्यकता नहीं है. वास्तव में, जब एक कार्यक्रम terminates, वस्तुओं और संकलक चर कि आपके प्रोग्राम का इस्तेमाल किया है के सभी नष्ट कर ही सकते हैं. केवल सही समय तुम वस्तुओं को नष्ट करने के साथ संबंध हो जाएगा अगर वस्तुओं को गतिशील बनाये गये थे, जो हम सीखना होगा जब अध्ययन संकेत दिए.

आप हेडर फाइल में बस इसे खाली कोष्ठक के साथ उपलब्ध कराने के द्वारा अपने नाशक लागू कर सकते हैं:

  # Ifndef BricksH
 # BricksH परिभाषित

 वर्ग TBrick
 (
 सार्वजनिक:
     ...
     ~ TBrick () ()
     ...
 निजी:
     ...
 );

 # Endif 

अन्यथा, आप भी इसे खाली कोष्ठक के साथ सीपीपी फाइल में लागू कर सकते हैं. यहाँ एक उदाहरण है:

  : TBrick: ~ (TBrick)
 (
 ) 

कॉपी निर्माता

एक ऑब्जेक्ट की प्रतिलिपि

एक वस्तु बनाने और उसके सदस्यों के लिए उपयुक्त मान असाइन करने के बाद, आप उस पर किसी भी नियमित रूप से आपरेशन प्रदर्शन कर सकते हैं. हालांकि इस उद्देश्य के लिए एक और छोटी वस्तुओं के साथ विशेष रूप से, जो विस्तारित किया जा सकता है जब ऑपरेटर से अधिक भार के बारे में सीखने जाएगा एक, तुम एक वस्तु असाइन कर सकते हो जाता है. हम पहले से ही सीखा है:

कैसे करने के लिए
असाइन
उदाहरण
एक चर के लिए एक मूल्य एक = 250 int;
एक दूसरे चर के मूल्य = NbrOfBoys NbrOfGirls;
एक वस्तु के सदस्य के लिए एक मूल्य = 'नाटक Video.Category'

असाइन करने के लिए एक चर एक बराबर है कि चर की एक प्रतिलिपि बनाने के लिए. जैसा कि आप दूसरे के लिए एक चर असाइन है, तो आप दूसरे के लिए एक वस्तु प्रदान कर सकते हैं. दोनों वस्तुओं recognizably संकलक के बराबर होना चाहिए. आप कल्पना करने के लिए दो बार एक ही ईंट निर्माण करना चाहते हैं. तुम सब करना है एक और एक ईंट असाइन है, जो है के निम्नलिखित मुख्य समारोह () में ध्यान रखना है:

  //------------------------------------------------ ---------------------------
 # शामिल
 namespace एसटीडी का उपयोग;
 # शामिल "Bricks.h"
 //------------------------------------------------ ---------------------------

 int मुख्य ()
 (
     / / एक ईंट की घोषणा
     TBrick hott (5.25, 3.55, 3.55);
     Hott.ShowProperties ();
     अदालत <endl <;

     / / बताए एक दूसरे से ईंट
     TBrick hott Bosco =;
     Bosco.ShowProperties ();

     वापसी 0;
 )
 //------------------------------------------------ --------------------------- 

यहाँ कार्यक्रम चलाने का एक उदाहरण है:

  फाउंडेशन ईंट गुण
 5.25 = लम्बाई
 3.55 = ऊँचाई
 मोटाई 3.55 =
 सीमेंट माप = 17.44

 फाउंडेशन ईंट गुण
 5.25 = लम्बाई
 3.55 = ऊँचाई
 मोटाई 3.55 =
 सीमेंट माप = 17.44

 प्रेस किसी भी कुंजी जारी रखने के लिए ... 

सूचना है कि दोनों एक ही बात आदेश प्रदर्शित करते हैं.

Destructors का उपयोग

  1. करने के लिए निर्माण और एक वस्तु का विनाश प्रभाव, एक नई कंसोल आवेदन पत्र बनाने के वर्णन लाइब्रेरी का नाम
  2. के रूप में फाइल की सामग्री को बदलने में निम्नानुसार है:
      / /
     # <iostream> शामिल
     namespace एसटीडी का उपयोग;
     / /
     वर्ग TBook
     (
     सार्वजनिक:
         () TBook; / निर्माता /
         ~ () / नाशक / TBook;
         संदेश शून्य () (अदालत <<"\ ती किताब \ n; पढ़ने")
     );
     / /
     : TBook: TBook ()
     (
         अदालत <<"मैं एक किताब ... निर्माता \ n का प्रयोग" देखें;
     )
     / /
     : TBook: ~ (TBook)
     (
         अदालत <<"मैं किताब बंद नाशक \ n का उपयोग करना!";
     )
     / /
     int मुख्य ()
     (
         अदालत <<"मैं पुस्तकालय \ n" हूँ;
         (
             TBook A;
         )
    
         उस किताब अदालत <<"पसंद नहीं \ NI था. मैं एक और \ n \ n कोशिश करेंगे";
         (
             TBook बी;
             बी संदेश ();
         )
    
         \ नी अदालत <<"पुस्तकालय \ n \ n" "से बाहर हो रही है;
    
         वापसी 0;
     )
     / / 
  3. निष्पादित कार्यक्रम के परिणाम देखने के लिए:
      मैं पुस्तकालय में हूँ
     मैं एक किताब देख ...  निर्माता का उपयोग
     मैं किताब को बन्द कीजिए!  नाशक का उपयोग करना
    
     मैं उस किताब पसंद नहीं आया.  मैं एक और कोशिश करेंगे
    
     मैं एक किताब देख ...  निर्माता का उपयोग
             मैं किताब पढ़
     मैं किताब को बन्द कीजिए!  नाशक का उपयोग करना
    
     मैं पुस्तकालय से बाहर हो रही है 
  4. अपने प्रोग्रामिंग वातावरण पर लौटें
  5. Students2 फ़ोल्डर से छात्र परियोजना पुनः खोलें.
  6. हमारे TStudent वर्ग के लिए एक नाशक बनाने के लिए, हेडर के रूप में फ़ाइल को बदलने के लिए इस प्रकार है:
     ifndef StudentsH # # परिभाषित का उपयोग कर namespace एसटीडी StudentsH <iostream> # शामिल हैं, सार्वजनिक वर्ग TStudent (: TStudent (); TStudent स्ट्रिंग (एफ, स्ट्रिंग एल); / / नाम Initializer TStudent (int जन्म तिथि, int भीड़, int YOB); / / YOB) int प्रारंभिक TStudent तिथि का जन्म (स्ट्रिंग Fn, स्ट्रिंग ln, int जन्म तिथि, int भीड़; ~ TStudent (); TStudent (const TStudent एंड एस); शून्य प्रदर्शन (); निजी: string firstname, स्ट्रिंग अंतिम नाम, int DayOfBirth ; int, int MonthOfBirth YearOfBirth;); # endif 
  7. Students.cpp के रूप में फाइल में लागू नाशक प्रकार है:
      : TStudent: ~ (TStudent) 
      ( 
      ) 
  8. परीक्षण कार्यक्रम और अपने प्रोग्रामिंग वातावरण में लौटने.

टैग: , , , ,

जैसे कि तुम क्या देख रहे हो?

सदस्यता लेने के द्वारा एक नियमित की बनें! तुम्हें पता है जब हम इस तरह अधिक महान पदों जोड़ पहली बार होगा. या द्वारा जुड़ें आरएसएस फ़ीड या ईमेल अपडेट आज!

वहाँ इस पोस्ट के लिए 2 टिप्पणियाँ कर रहे हैं. आप के माध्यम से इस प्रविष्टि के लिए किसी भी प्रतिक्रियाओं का पालन कर सकते हैं फ़ीड आरएसएस 2.0 और. अंत करने के लिए छोड़ आप कर सकते हैं एक प्रतिक्रिया छोड़ दें या TrackBack अपनी खुद की साइट से.


एक उत्तर दें छोड़ दो

आप होना चाहिए लॉग इन पोस्ट एक टिप्पणी करने के लिए.