কম্পিউটার

C++ এ ব্যক্তিগত ধ্বংসকারী


এখানে আমরা দেখতে পাব যে ডিস্ট্রাক্টরগুলি C++ এ ব্যক্তিগত হলে কী হবে। আসুন ধারণা পেতে কিছু উদাহরণ কোড দেখি।

এই কোডটিতে ব্যক্তিগত ধ্বংসকারী রয়েছে, কিন্তু এটি কোনো ত্রুটি তৈরি করবে না কারণ কোনো বস্তু তৈরি হয় না।

উদাহরণ

#include <iostream>
using namespace std;
class my_class {
   private:
      ~my_class(){
         //private destructor
      }
};
int main() {
}


এই প্রোগ্রামে, এটি কম্পাইলেশন ত্রুটি তৈরি করবে, কারণ আমরা একটি বস্তু তৈরি করার চেষ্টা করছি, কিন্তু কম্পাইলার লক্ষ্য করতে পারে যে ধ্বংসকারী অ্যাক্সেসযোগ্য নয়। তাই কাজটি শেষ করার পরে এটিকে ধ্বংস করা যাবে না।

উদাহরণ

#include <iostream>
using namespace std;
class my_class {
   private:
      ~my_class() {
         //private destructor
      }
};
int main() {
   my_class obj;
}

আউটপুট

[Error] 'my_class::~my_class()' is private

এখন যদি আমরা সেই ক্লাসের জন্য একটি পয়েন্টার তৈরি করি, তাহলে এটি ত্রুটি তৈরি করবে না কারণ কোনো প্রকৃত বস্তু তৈরি হয় না।

উদাহরণ

#include <iostream>
using namespace std;
class my_class {
   private:
      ~my_class() {
         //private destructor
      }
};
int main() {
   my_class *obj;
}


যদি নতুন অপারেটর ব্যবহার করে একটি বস্তু তৈরি করা হয়, তবে কোন ত্রুটি তৈরি হবে না। কম্পাইলার মনে করে যে মেমরি থেকে বস্তুটি মুছে ফেলার জন্য এটি প্রোগ্রামারের দায়িত্ব।

উদাহরণ

#include <iostream>
using namespace std;
class my_class {
   private:
      ~my_class() {
         //private destructor
      }
};
int main() {
   my_class *obj = new my_class;
}

আউটপুট

 

এখন যদি আমরা বস্তুটি মুছে ফেলার জন্য মুছে ফেলার বিবৃতি যোগ করি, তাহলে এটি ব্যক্তিগত ধ্বংসকারীর জন্য ত্রুটি তৈরি করবে।

উদাহরণ

#include <iostream>
using namespace std;
class my_class {
   private:
      ~my_class() {
         //private destructor
      }
};
int main() {
   my_class *obj = new my_class;
   delete obj;
}
মুছুন

আউটপুট

[Error] 'my_class::~my_class()' is private

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

  2. C++ এ ব্যক্তিগত ও সুরক্ষিত সদস্য

  3. C++ এ এনক্যাপসুলেশন

  4. C++ এ শনাক্তকারী