ডিস্ট্রাক্টর হলো 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 প্রিন্ট হবে।
কেন? কারণ এখানে ভেরিয়েবল রেফারেন্স রিটার্ন করা হয়েছে। ডিস্ট্রাক্টর কল হলে মান ১০ হয়ে যায় এবং রেফারেন্স পাস করা থাকায় ১০ প্রিন্ট হয়।