কম্পিউটার টিউটোরিয়াল

C++-এ ভার্চুয়াল কনস্ট্রাক্টর


ভার্চুয়াল মেকানিজম শুধু তখন কাজ করে যখন আমাদের কাছে একটি বেস ক্লাস পয়েন্টার থাকে যা একটি ডেরাইভড ক্লাস অবজেক্টের দিকে নির্দেশ করে।

C++-এ, কনস্ট্রাক্টর ভার্চুয়াল হতে পারে না, কারণ যখন একটি ক্লাসের কনস্ট্রাক্টর এক্সিকিউট হয় তখন মেমোরিতে কোনো ভার্চুয়াল টেবিল থাকে না, মানে কোনো ভার্চুয়াল পয়েন্টার এখনও ডিফাইনড নেই। তাই কনস্ট্রাক্টর সবসময় নন-ভার্চুয়াল হওয়া উচিত।

তবে ভার্চুয়াল ডেস্ট্রাক্টর সম্ভব।

উদাহরণ কোড
#include 
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++-এ রূপান্তর কনস্ট্রাক্টর (Conversion constructor in C++?)

  2. C++-এ কনস্ট্রাক্টরে ভেক্টর পাস করা (Passing a vector to constructor in C++)

  3. C++ ডিফল্ট কনস্ট্রাক্টর (Default Constructor)

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