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

C++-এ প্রাইভেট ডেস্ট্রাক্টর

C++-এ ডেস্ট্রাক্টর private ডিক্লেয়ার করলে অবজেক্ট কনস্ট্রাকশন ও ডেস্ট্রাকশন নিয়ন্ত্রণ করা যায়। এটি সিঙ্গলটন প্যাটার্ন, ফ্যাক্টরি মেথড, বা রেফারেন্স কাউন্টিং-এ ব্যবহার হয়।

কেস ১: কোনো অবজেক্ট নেই - কম্পাইল এরর নেই

class MyClass { private: ~MyClass() {} };
int main() { } // OK

কেস ২: স্ট্যাক অবজেক্ট তৈরি - কম্পাইল এরর

class MyClass { private: ~MyClass() {} };
int main() { MyClass obj; } // Error: destructor is private

কেস ৩: পয়েন্টার ডিক্লেয়ার (অবজেক্ট নেই) - OK

int main() { MyClass* obj; } // OK, কোনো অবজেক্ট কনস্ট্রাক্ট হয়নি

কেস ৪: new দিয়ে হিপ অবজেক্ট - OK (কম্পাইলার দায়দা programmers's)

int main() { MyClass* obj = new MyClass; } // OK, কিন্তু delete করা যাবে না

কেস ৫: delete কল করলে - কম্পাইল এরর

int main() { MyClass* obj = new MyClass; delete obj; } // Error: destructor is private

ব্যবহার ক্ষেত্র

  • সিঙ্গলটন: প্রাইভেট ডেস্ট্রাক্টর + স্ট্যাটিক ফ্যাক্টরি মেথড।
  • রেফারেন্স কাউন্টিং: শুধু রেফারেন্স কাউন্ট ০ হলে ডিলিট করা যায়।
  • পুল অ্যালোকেশন: অবজেক্ট পুলে রিটার্ন করতে বাধ্য করা।

সতর্কতা: প্রাইভেট ডেস্ট্রাক্টর থাকলে std::unique_ptr, std::shared_ptr ব্যবহার করতে কাস্টম ডিলিটার লাগবে।

  1. C++-এ পিউর ভার্চুয়াল ডিস্ট্রাক্টর

  2. C++-এ প্রাইভেট এবং প্রোটেক্টেড মেম্বার

  3. C++-এ এনক্যাপসুলেশন

  4. C++-এ আইডেন্টিফায়ার (Identifiers)