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

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++ प्रोग्राम है। एल्गोरिथम Begin    Declare a class named as vector.       Declare vec of vector type.       Declare a constructor of vector class.          Pass a vector object v a

  1. - C++ डिफ़ॉल्ट कंस्ट्रक्टर

    एक क्लास कंस्ट्रक्टर एक क्लास का विशेष सदस्य फ़ंक्शन होता है जो उस क्लास के नए ऑब्जेक्ट्स बनाने पर निष्पादित होता है। एक कंस्ट्रक्टर का नाम क्लास के समान ही होगा और इसका कोई रिटर्न टाइप नहीं होगा, यहां तक कि void भी नहीं। कंस्ट्रक्टर्स कुछ मेंबर वेरिएबल्स के लिए प्रारंभिक मान सेट करने के लिए बहुत उ

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

    कॉपी कंस्ट्रक्टर क्या है? एक प्रकार का कंस्ट्रक्टर जो समान क्लास के मौजूदा ऑब्जेक्ट से नया ऑब्जेक्ट बनाता और आरंभ करता है। यदि परिभाषित न हो तो कंपाइलर डिफॉल्ट कॉपी कंस्ट्रक्टर बनाता है (शैलो कॉपी)। पॉइंटर सदस्यों या डायनामिक मेमोरी वाली क्लास के लिए डीप कॉपी कंस्ट्रक्टर आवश्यक है। सिंटैक्स ClassN