Constructor and Destructor

Constructors

✓ Constructor হলো একটি বিশেষ ধরনের মেথড যা কোনো ক্লাসের অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়।

✓ এর প্রধান উদ্দেশ্য হলো অবজেক্টের state (ইনস্ট্যান্স ভেরিয়েবল) ইনিশিয়ালাইজ বা শুরু করা।

✓ একটি constructor-এর নাম অবশ্যই সেই ক্লাসের নামের সাথে হুবহু এক হতে হবে।

✓ এর কোনো return type থাকে না, এমনকি void-ও নয়।

✓ Constructor সাব-ক্লাস দ্বারা ইনহেরিট (Inherited) হয় না।

✓ একটি সাব-ক্লাস super() কিওয়ার্ড ব্যবহার করে তার সুপার-ক্লাসের কনস্ট্রাক্টরকে কল করতে পারে।

✓ একটি ক্লাসে ভিন্ন ভিন্ন প্যারামিটার লিস্টসহ একাধিক কনস্ট্রাক্টর থাকতে পারে, যাকে constructor overloading বলা হয়।

Destructors

✓ Destructor হলো একটি বিশেষ মেথড যা কোনো অবজেক্ট ডিলিট হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয়।

✓ এর প্রধান উদ্দেশ্য হলো অবজেক্টটি যে রিসোর্সগুলো (Memory, Files) ধরে রেখেছিল সেগুলো মুক্ত করে দেওয়া।

✓ C++ এ ডিস্ট্রাক্টরের নাম ক্লাসের নামের মতোই হয়, তবে তার আগে একটি টিল্ড (~) চিহ্ন থাকে।

✓ Java-তে ডিস্ট্রাক্টরের সরাসরি বা এক্সপ্লিসিট ব্যবহার নেই।

✓ Return Type: এর কোনো রিটার্ন টাইপ নেই এবং এটি কোনো প্যারামিটার গ্রহণ করে না।

✓ যখন কোনো অবজেক্টের স্কোপ শেষ হয়ে যায় বা সেটি ডিলিট করা হয়, তখন ডিস্ট্রাক্টর নিজে থেকেই কল হয়।

✓ জাভা মেমোরি ম্যানেজমেন্টের জন্য garbage collector ব্যবহার করে, যা অব্যবহৃত অবজেক্টগুলোকে স্বয়ংক্রিয়ভাবে ধ্বংস করে মেমোরি খালি করে।

কোডের উদাহরণ

#include <iostream>

using namespace std;

class Library {

public:

    Library() {  // Constructor তৈরি

        cout << "ICT Wizard Books Handed over" << endl;

    }

    ~Library() {

        cout << "Book Backed" << endl;

    } // Destructor তৈরি

};

int main() {

    Library myBook;

    cout << "read end" << endl;

    return 0; // Destructor কল হলো

}

সহজ বাংলায়ঃ

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

Destructor - আপনার পড়া শেষ হয়ে গেলে আপনি যখন বইটা ফেরত দিতে গেলেন, লাইব্রেরিয়ান খাতা থেকে আপনার নাম কেটে দিলেন এবং বইটা আবার শেলফে তুলে রাখলেন। এটাই হলো Destructor। এটি অবজেক্টের কাজ শেষ হয়ে গেলে সব পরিষ্কার করে ফেলে।

Constructor এর প্রকারভেদ

১. Default Constructor

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

•       কাজ: এটি ভেরিয়েবলগুলোকে শূন্য (Default) মান দিয়ে শুরু করে।

২. Parameterized Constructor

যে কনস্ট্রাকটরের মাধ্যমে অবজেক্ট তৈরির সময় বাইরে থেকে মান পাঠানো যায়, তাকে প্যারামিটারাইজড কনস্ট্রাকটর বলে।

•       কাজ: এটি বিভিন্ন অবজেক্টকে আলাদা আলাদা মান দিয়ে শুরু করতে সাহায্য করে।

•       উদাহরণ: Student s1("Rahim"); এখানে "Rahim" নামটি প্যারামিটার হিসেবে পাঠানো হচ্ছে।

৩. Copy Constructor

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

•       কাজ: এটি একটি অবজেক্টের হুবহু নকল বা কপি তৈরি করতে ব্যবহৃত হয়।