কম্পিউটার

কেন 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. কেন Chrome-এ এতগুলি প্রক্রিয়া চলছে?