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

C++ में वर्चुअल डिस्ट्रक्टर


बेस क्लास के पॉइंटर का उपयोग करके डेराइव्ड क्लास ऑब्जेक्ट को डिलीट करते समय, बेस क्लास को वर्चुअल डिस्ट्रक्टर के साथ परिभाषित किया जाना चाहिए।

उदाहरण कोड

#include<iostream> using namespace std; class b {    public:       b() {          cout<<"Constructing base \n";       }       virtual ~b() {          cout<<"Destructing base \n";       } }; class d: public b {    public:       d() {          cout<<"Constructing derived \n";       }       ~d() {          cout<<"Destructing derived \n";       } }; int main(void) {    d *derived = new d();    b *bptr = derived;    delete bptr;    return 0; }

आउटपुट

Constructing base Constructing derived Destructing derived Destructing base

  1. - C++ में प्योर वर्चुअल डिस्ट्रक्टर

    प्योर वर्चुअल डिस्ट्रक्टर C++ में संभव है। यदि किसी क्लास में प्योर वर्चुअल डिस्ट्रक्टर है तो प्योर वर्चुअल डिस्ट्रक्टर के लिए फंक्शन बॉडी प्रदान करना अनिवार्य है।उदाहरण कोड#include <iostream> using namespace std; class B {    public:    virtual ~B()=0; // प्योर वर्चुअल डिस

  1. - C++ में इंलाइन वर्चुअल फंक्शन

    C++ में वर्चुअल फंक्शन्स बेस क्लास पॉइंटर्स की एक सूची बनाने और किसी भी डेराइव्ड क्लास के मेथड्स को कॉल करने के लिए उपयोग किए जाते हैं, बिना यह जाने कि डेराइव्ड क्लास ऑब्जेक्ट किस प्रकार का है। वर्चुअल फंक्शन्स रनटाइम पर लेट रिजॉल्व होते हैं।वर्चुअल फंक्शन का मुख्य उपयोग रनटाइम पॉलीमॉर्फिज्म प्राप्त

  1. - C++ में वर्चुअल डिस्ट्रक्टर्स का उपयोग कब करना चाहिए?

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