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

हमें सी ++ में शुद्ध आभासी विनाशक की आवश्यकता क्यों है?

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

उदाहरण कोड

#include <iostream>
using namespace std;

class B {
   public: virtual ~B()=0; // Pure virtual destructor
};

B::~B() {
   cout << "Pure virtual destructor is called";
}

class D : public B {
   public: ~D() {
   cout << "~Derived\n";
   }
};

int main() {
   B *b = new D();
   delete b;
   return 0;
}

आउटपुट

~Derived
Pure virtual destructor is called

  1. सी ++ में शुद्ध आभासी विनाशक

    सी ++ में शुद्ध आभासी विनाशक संभव है। यदि किसी वर्ग में शुद्ध आभासी विनाशक है तो उसे शुद्ध आभासी विनाशक के लिए एक कार्य निकाय प्रदान करना होगा। उदाहरण कोड #include <iostream> using namespace std; class B {    public:    virtual ~B()=0; // Pure virtual destructor }; B::~B(

  1. सी ++ में शुद्ध कार्य

    शुद्ध फ़ंक्शन हमेशा समान तर्क मानों के लिए समान परिणाम लौटाते हैं। वे केवल परिणाम लौटाते हैं और तर्क संशोधन, I/O स्ट्रीम, आउटपुट पीढ़ी आदि जैसे कोई अतिरिक्त दुष्प्रभाव नहीं होते हैं। कुछ शुद्ध कार्य हैं sin(), strlen(), sqrt(), max(), pow(), floor() आदि। कुछ अशुद्ध कार्य रैंड (), समय() आदि हैं। कु

  1. C++ को स्कोप रेजोल्यूशन ऑपरेटर की आवश्यकता क्यों है?

    ::(स्कोप रेजोल्यूशन) ऑपरेटर का उपयोग वैरिएबल स्कोप के कारण छिपे हुए नाम प्राप्त करने के लिए किया जाता है ताकि आप अभी भी उनका उपयोग कर सकें। स्कोप रिज़ॉल्यूशन ऑपरेटर को यूनरी और बाइनरी दोनों के रूप में इस्तेमाल किया जा सकता है। आप यूनरी स्कोप ऑपरेटर का उपयोग कर सकते हैं यदि नामस्थान स्कोप या ग्लोबल स