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

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

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

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

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