কম্পিউটার

কেন আমাদের C++ এ একটি বিশুদ্ধ ভার্চুয়াল ধ্বংসকারীর প্রয়োজন?


C++ প্রোগ্রামে বিশুদ্ধ ভার্চুয়াল ডেস্ট্রাক্টরকে অনুমতি দেওয়ার কোনো খারাপ প্রভাব নেই। বিশুদ্ধ ভার্চুয়াল ডেস্ট্রক্টরের জন্য একটি ফাংশন বডি প্রদান করা আবশ্যক কারণ বেস ক্লাস ডেস্ট্রক্টরের আগে ডেরিভড ক্লাসের ডেস্ট্রক্টরকে প্রথমে বলা হয়, তাই আমরা যদি একটি ফাংশন বডি প্রদান না করি, তাহলে এটি বস্তু ধ্বংসের সময় কল করার মতো কিছুই খুঁজে পাবে না এবং ত্রুটি ঘটবে। . আমরা এর সংজ্ঞা সহ একটি বিশুদ্ধ ভার্চুয়াল ধ্বংসকারী তৈরি করে সহজেই একটি বিমূর্ত শ্রেণী তৈরি করতে পারি।

উদাহরণ কোড

#include <iostream>
using namespace std;

class B {
   public: virtual ~B()=0; // Pure virtual destructor
};

B::~B() {
   cout << "Pure virtual destructor is called";
}

class D : public B {
   public: ~D() {
   cout << "~Derived\n";
   }
};

int main() {
   B *b = new D();
   delete b;
   return 0;
}

আউটপুট

~Derived
Pure virtual destructor is called

  1. একটি ভার্চুয়াল ফাংশন এবং C++ এ একটি বিশুদ্ধ ভার্চুয়াল ফাংশনের মধ্যে পার্থক্য

  2. C++ এ বিশুদ্ধ ভার্চুয়াল ধ্বংসকারী

  3. C++ এ বিশুদ্ধ ফাংশন

  4. কেন C++ স্কোপ রেজোলিউশন অপারেটর প্রয়োজন?