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

C++-এ ডিস্ট্রাক্টর (Destructor) এর ব্যবহার


ডিস্ট্রাক্টর হলো C++-এ একটি ক্লাসের ফাংশন যা অবজেক্ট ডিলিট করার দায়িত্ব নেয়।

ডিস্ট্রাক্টর কল কখন হয়

ডিস্ট্রাক্টর কল হয় যখন ক্লাসের অবজেক্ট প্রোগ্রামে স্কোপ বাইরে চলে যায়। অবজেক্ট স্কোপ বাইরে যাওয়ার পরিস্থিতি:

  • ফাংশনের স্কোপ বাইরে যাওয়া।

  • প্রোগ্রাম সমাপ্তি।

  • লোকাল ভেরিয়েবল ইনিশিয়ালাইজ করার ব্লক স্কোপ বাইরে যাওয়া।

  • অবজেক্টের delete অপারেটর ব্যবহার করা।

উদাহরণ

নিচের কোডটি দেখি এবং আউটপুট حدস করুন:

#include <iostream> 
using namespace std; 

int i;

class destructor {
public:
    ~destructor() {
        i = 10;
    }
};

int valueInitializer() {
    i = 3;
    destructor d1;
    return i;
}

int main() {
    cout << "i = " << valueInitializer() << endl;
    return 0;
}

আউটপুট

i = 3

এখানে গ্লোবাল ভেরিয়েবল i есть। valueInitializer ফাংশনে i=3 সেট করে অবজেক্ট d1 তৈরি করা হয়েছে এবং i রিটার্ন করা হয়েছে। আউটপুট ৩। কেন? কারণ ডিস্ট্রাক্টর ফাংশন স্কোপ বাইরে যাওয়ার সময় কল হয়। কিন্তু তার আগেই ফাংশনটি মান ৩ রিটার্ন করে দিয়েছে।

আরেকটি উদাহরণ

এবার এই কোডটির আউটপুট حدস করুন:

#include <iostream> 
using namespace std; 

int i;

class destructor {
public:
    ~destructor() {
        i = 10;
    }
};

int& valueInitializer() {
    i = 3;
    destructor d1;
    return i;
}

int main() {
    cout << "i = " << valueInitializer() << endl;
    return 0;
}

আউটপুট

এটি মিলত-जুলত কোড কিন্তু এখানে i = 10 প্রিন্ট হবে।

কেন? কারণ এখানে ভেরিয়েবল রেফারেন্স রিটার্ন করা হয়েছে। ডিস্ট্রাক্টর কল হলে মান ১০ হয়ে যায় এবং রেফারেন্স পাস করা থাকায় ১০ প্রিন্ট হয়।


  1. C++-এ এক্সপ্রেশন ট্রি (Expression Tree) উদাহরণসহ

  2. C++-এ কি-সহ পারমিউটেশন কুয়েরি প্রসেস করুন

  3. সামান সামের সাবঅ্যারে দিয়ে অ্যারে স্প্লিট করা C++-এ

  4. C++-এ ৩n স্লাইস পিজা (Pizza With 3n Slices)