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

C++-এ রুল অফ থ্রি (Rule of Three)


রুল অফ থ্রি হল C++ ব্যবহার করার সময় একটি রুল অফ থাম্ব। এটি একটি ভালো অভ্যাসের নিয়ম যা বলে যে যদি আপনার ক্লাসে নিচের যেকোনো একটি দরকার পড়ে

  • একটি কপি কনস্ট্রাক্টর,
  • এন অ্যাসাইনমেন্ট অপারেটর,
  • অথবা একটি ডিস্ট্রাক্টর,

এক্সপ্লিসিটলি ডিফাইন করা হয়, তবে সেটি সম্ভবত তিনটিই দরকার পড়বে।

কেন? কারণ, যদি আপনার ক্লাস উপরের যেকোনো একটি দরকার পড়ে, তবে এটি ডাইনামিক্যালি অ্যালোকেটেড রিসোর্স ম্যানেজ করছে এবং অন্য দুটিও সফলভাবে তা অর্জনের জন্য প্রয়োজন হবে। উদাহরণস্বরূপ, যদি আপনার অ্যাসাইনমেন্ট অপারেটর দরকার পড়ে, তবে আপনি বর্তমানে রেফারেন্স দিয়ে কপি হওয়া অবজেক্টের কপি তৈরি করছেন, তাই রিসোর্স অ্যালোকেট করছেন। আপনাকে কপি করার জন্য কপি কনস্ট্রাক্টর এবং এই রিসোর্স মুক্ত করার জন্য ডিস্ট্রাক্টর দরকার পড়বে।

১. কপি কনস্ট্রাক্টর − কম্পাইলার-সাপ্লাইড কপি কনস্ট্রাক্টর Foo Manager-এর সব অ্যাট্রিবিউটের মেম্বার-ওয়াইজ কপি করে। এটি অ্যাসাইনমেন্ট অপারেটরের মতো একই সমস্যা তৈরি করে।

২. অ্যাসাইনমেন্ট অপারেটর − যদি আপনি একটি প্রদান না করেন তবে কম্পাইলার একটি ডিফল্ট অ্যাসাইনমেন্ট অপারেটর তৈরি করে। ডিফল্ট অ্যাসাইনমেন্ট অপারেশন একটি মেম্বার-ওয়াইজ কপি ফাংশন এবং শ্যালো কপি করে, ডিপ কপি নয়। এটি মেমরি লিক, ভুল অ্যাসাইনমেন্টের মতো সমস্যা তৈরি করতে পারে।

৩. ডিস্ট্রাক্টর − যখন এই ম্যানেজার স্কোপ থেকে বাইরে যাবে তবে এটি যে সব রিসোর্স ম্যানেজ করছিল সেগুলো ফ্রি করা উচিত।


  1. স্ট্রিং কপি করার C++ প্রোগ্রাম (strcpy ব্যবহার করে এবং না করে)

  2. C++-এ Rule of Three vs Rule of Five পার্থক্য

  3. C++-এ রুল অফ থ্রি (Rule of Three) কী?

  4. C++-এ অ্যাসাইনমেন্ট অপারেটরসমূহ