কম্পিউটার

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++ এ রূপান্তর কনস্ট্রাক্টর?

  2. C++ এ কনস্ট্রাক্টরের কাছে একটি ভেক্টর পাস করা

  3. C++ ডিফল্ট কনস্ট্রাক্টর

  4. C++ এ কন্সট্রাক্টর কপি করুন