Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में विनाशक

सी ++ में विनाशक एक वर्ग में सदस्य कार्य होते हैं जो किसी ऑब्जेक्ट को हटाते हैं। उन्हें तब बुलाया जाता है जब क्लास ऑब्जेक्ट स्कोप से बाहर हो जाता है जैसे कि जब फंक्शन समाप्त होता है, प्रोग्राम समाप्त होता है, एक डिलीट वेरिएबल कहा जाता है आदि।

विनाशक सामान्य सदस्य कार्यों से भिन्न होते हैं क्योंकि वे कोई तर्क नहीं लेते हैं और कुछ भी वापस नहीं करते हैं। इसके अलावा, विध्वंसक का नाम उनकी कक्षा के समान होता है और उनके नाम से पहले एक टिल्ड (~) होता है।

C++ में डिस्ट्रक्टर्स को प्रदर्शित करने वाला प्रोग्राम इस प्रकार दिया गया है।

उदाहरण

#include<iostream>
using namespace std;
class Demo {
   private:
   int num1, num2;
   public:
   Demo(int n1, int n2) {
      cout<<"Inside Constructor"<<endl;
      num1 = n1;
      num2 = n2;
   }
   void display() {
      cout<<"num1 = "<< num1 <<endl;
      cout<<"num2 = "<< num2 <<endl;
   }
   ~Demo() {
      cout<<"Inside Destructor";
   }
};
int main() {
   Demo obj1(10, 20);
   obj1.display();
   return 0;
}

आउटपुट

Inside Constructor
num1 = 10
num2 = 20
Inside Destructor

उपरोक्त कार्यक्रम में, क्लास डेमो में एक पैरामीटरयुक्त कंस्ट्रक्टर होता है जो n1 और n2 द्वारा प्रदान किए गए मानों के साथ num1 और num2 को इनिशियलाइज़ करता है। इसमें एक फ़ंक्शन डिस्प्ले () भी होता है जो num1 और num2 के मान को प्रिंट करता है। डेमो में एक विध्वंसक भी होता है जिसे क्लास ऑब्जेक्ट का दायरा समाप्त होने पर कहा जाता है। इसके लिए कोड स्निपेट इस प्रकार दिया गया है।

class Demo {
   private:
   int num1, num2;
   public:
   Demo(int n1, int n2) {
      cout<<"Inside Constructor"<<endl;
      num1 = n1;
      num2 = n2;
   }
   void display() {
      cout<<"num1 = "<< num1 <<endl;
      cout<<"num2 = "<< num2 <<endl;
   }
   ~Demo() {
      cout<<"Inside Destructor";
   }
};

फ़ंक्शन मुख्य () में क्लास प्रकार डेमो के ऑब्जेक्ट के लिए ऑब्जेक्ट परिभाषा शामिल है। फिर फ़ंक्शन डिस्प्ले() कहा जाता है। यह नीचे दिखाया गया है।

Demo obj1(10, 20);
obj1.display();

  1. C++ में कॉपी कंस्ट्रक्टर

    कॉपी कंस्ट्रक्टर एक प्रकार का कंस्ट्रक्टर है। यह एक ऑब्जेक्ट बनाता है और इसे उसी क्लास के ऑब्जेक्ट के साथ इनिशियलाइज़ करता है। यदि कॉपी कंस्ट्रक्टर को कक्षा में परिभाषित नहीं किया गया है, तो संकलक स्वयं एक को परिभाषित करता है। एक कॉपी कंस्ट्रक्टर उस वर्ग के लिए जरूरी है जिसमें पॉइंटर वैरिएबल या डायन

  1. C++ में कंस्ट्रक्टर्स

    कंस्ट्रक्टर एक वर्ग के कार्य होते हैं जिन्हें तब निष्पादित किया जाता है जब कक्षा की नई वस्तुएँ बनाई जाती हैं। कंस्ट्रक्टर्स का नाम क्लास के समान है और कोई रिटर्न टाइप नहीं है, यहां तक ​​​​कि शून्य भी नहीं है। वे प्राथमिक रूप से वर्ग के चरों के लिए प्रारंभिक मान प्रदान करने के लिए उपयोगी होते हैं। द

  1. सी ++ में वर्चुअल विनाशकों का उपयोग कब करें?

    स्कॉट मेयर्स इन इफेक्टिव C++ कहते हैं - यदि किसी वर्ग में कोई वर्चुअल फ़ंक्शन है, तो उसके पास एक वर्चुअल डिस्ट्रक्टर होना चाहिए, और वह वर्ग जो बेस क्लास के लिए डिज़ाइन नहीं किया गया है या पॉलीमॉर्फिक रूप से उपयोग करने के लिए डिज़ाइन नहीं किया गया है, उसे वर्चुअल डिस्ट्रक्टर घोषित नहीं करना चाहिए।