C++-তে ডিস্ট্রাক্টর হলো একটি ক্লাসের মেম্বার ফাংশন যা একটি অবজেক্ট ডিলিট করে। এগুলো তখন কল হয় যখন ক্লাস অবজেক্ট স্কোপের বাইরে চলে যায় যেমন যখন ফাংশন শেষ হয়, প্রোগ্রাম শেষ হয়, একটি ডিলিট ভেরিয়েবল কল করা হয় ইত্যাদি।
ডিস্ট্রাক্টর সাধারণ মেম্বার ফাংশন থেকে আলাদা কারণ এগুলো কোনো আর্গুমেন্ট নেয় না এবং কিছু রিটার্ন করে না। এছাড়া, ডিস্ট্রাক্টরদের তাদের ক্লাসের মতো একই নাম থাকে এবং তাদের নামের আগে টিল্ডা (~) চিহ্ন থাকে।
C++-তে ডিস্ট্রাক্টর প্রদর্শন করে এমন একটি প্রোগ্রাম নিচে দেওয়া হলো:
উদাহরণ
#include <iostream>
using namespace std;
class Demo {
private:
int num1, num2;
public:
Demo(int n1, int n2) {
cout << "Inside Constructor" << endl;
num1 = n1;
num2 = n2;
}
void display() {
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
}
~Demo() {
cout << "Inside Destructor";
}
};
int main() {
Demo obj1(10, 20);
obj1.display();
return 0;
}
আউটপুট
Inside Constructor num1 = 10 num2 = 20 Inside Destructor
উপরোক্ত প্রোগ্রামে, Demo ক্লাসে একটি প্যারামিটারাইজড কনস্ট্রাক্টর রয়েছে যা n1 এবং n2 দ্বারা প্রদত্ত মান দিয়ে num1 এবং num2 ইনিশিয়ালাইজ করে। এতে একটি display() ফাংশনও রয়েছে যা num1 এবং num2-এর মান প্রিন্ট করে। Demo-এ একটি ডিস্ট্রাক্টরও রয়েছে যা ক্লাস অবজেক্টের স্কোপ শেষ হলে কল হয়। এর কোড স্নিপেট নিচে দেওয়া হলো:
class Demo {
private:
int num1, num2;
public:
Demo(int n1, int n2) {
cout << "Inside Constructor" << endl;
num1 = n1;
num2 = n2;
}
void display() {
cout << "num1 = " << num1 << endl;
cout << "num2 = " << num2 << endl;
}
~Demo() {
cout << "Inside Destructor";
}
};
main() ফাংশনে Demo ক্লাস টাইপের একটি অবজেক্টের ডেফিনিশন রয়েছে। তারপর display() ফাংশনটি কল করা হয়েছে। এটি নিচে দেখানো হলো:
Demo obj1(10, 20); obj1.display();