ধ্বংসকারী c++ এ একটি ক্লাসের একটি ফাংশন যা একটি ক্লাসের অবজেক্ট মুছে ফেলার কাজ করে।
একজন ধ্বংসকারীকে কল করা
যখন কোন ক্লাসের অবজেক্ট প্রোগ্রামে সুযোগের বাইরে চলে যায় তখন ডেস্ট্রাক্টর বলা হয়। যে ক্ষেত্রে বস্তুটি সুযোগের বাইরে চলে যায়,
-
প্রোগ্রামটি একটি ফাংশনের সুযোগের বাইরে চলে যায়৷
-
প্রোগ্রাম শেষ হয়।
-
অবজেক্টের স্থানীয় ভেরিয়েবল শুরু করার ব্লক সুযোগের বাইরে চলে যায়।
-
যখন বস্তুর অপারেটর মুছে ফেলা হয়।
উদাহরণ
আসুন একটি কোড দেখি এবং প্রোগ্রামের আউটপুট অনুমান করি,
#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 তৈরি করেছি এবং তারপর ভ্যালু ইনিশিয়ালাইজড ফাংশনে এর মান পরিবর্তন করেছি। এখানে, আমরা এটিকে 3 মান দিয়ে শুরু করেছি তারপর অবজেক্ট d1 তৈরি করেছি এবং তারপর মানটি ফেরত দিয়েছি।
আউটপুট অনুমান?
এটি 3, আপনি যদি এটি সঠিক অনুমান করেন তবে আপনার জন্য তালি বাজাবে এবং যদি আপনি এটি 10 বলে মনে করেন তবে চিন্তার কিছু নেই। এখন দেখুন এখানে কি হয়েছে,
উপরে আলোচিত হিসাবে ডেস্ট্রাক্টর বলা হয় যখন কলিং ফাংশন সুযোগের বাইরে চলে যায়। এবং সুযোগের বাইরে যাওয়ার আগে ফাংশনটি মান 3 ফিরিয়ে দিয়েছে।
উদাহরণ
এখন এই ব্লকের আউটপুট অনুমান করে দেখুন,
#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 পরিবর্তে।
কেন?
এখানে, আমরা মানের পরিবর্তে পরিবর্তনশীল রেফারেন্স ফিরিয়ে দিয়েছি। সুতরাং, যখন ধ্বংসকারী বলা হয় তখন এটি মান পরিবর্তন করে 10 করে এবং রেফারেন্স পাস হওয়ার সাথে সাথে 10 মুদ্রিত হয়।