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

C++-এ キャスト টাইপ: Regular Cast vs static_cast vs dynamic_cast

C++-এ টাইপ কনভার্সনের জন্য একাধিক কাস্ট অপারেটর রয়েছে। প্রতিটির নির্দিষ্ট ব্যবহার ক্ষেত্র এবং সেফটি লেভেল রয়েছে।

প্রধান কাস্ট অপারেটরসমূহ

1. static_cast — সাধারণ টাইপ কনভার্সন

  • নরমাল/সাধারণ টাইপ কনভার্সনের জন্য (যেমন float → int, char → int)।
  • ইমপ্লিসিট টাইপ কোয়ার্সনের জন্যও দায়ী।
  • কম্পাইল-টাইম চেকিং করে (আর lutego পয়েন্টার রিলেটেড কনভার্সনেও সেফটি দেয়)।
  • পলিমরফিজমের জন্য উপযুক্ত নয় (বেস → ডেরাইভড ডাউনকাস্টে রানটাইম চেক নেই)।

2. dynamic_cast — পলিমরফিজম হ্যান্ডলিং

  • শুধু পলিমরফিক ক্লাসে (ভirtual ফাংশন থাকলে) কাজ করে।
  • বেস ক্লাস পয়েন্টার/রেফারেন্স থেকে ডেরাইভড ক্লাসে ডাউনকাস্ট করার জন্য।
  • রানটাইমে টাইপ চেক করে — যদি কনভার্সন অবৈধ হয় তবে nullptr রিটার্ন করে (পয়েন্টারের কেসে) বা std::bad_cast এক্সেপশন থ্রো করে (রেফারেন্সের কেসে)।
  • পারফরম্যান্স কস্ট আছে (RTTI ব্যবহার করে)।

3. Regular Cast (C-style Cast) — সবচেয়ে শক্তিশালী কিন্তু অসুরক্ষিত

  • সিনট্যাক্স: (Type)expression বা Type(expression)
  • এটি const_cast, static_cast এবং reinterpret_cast-র কম্বিনেশন।
  • dynamic_cast করে না — তাই পলিমরফিজমে অসুরক্ষিত।
  • কনস্ট করতে পারে, পয়েন্টার টাইপ পরিবর্তন করতে পারে, বিট প্যাটার্ন রি-ইন্টারপ্রেট করতে পারে — সব একসাথে।
  • সীমাবদ্ধতা: প্রোগ্রামারের ইচ্ছা স্পষ্ট নয়, কম্পাইলার ওয়ার্নিং দেয় না।

অন্যান্য কাস্ট

  • const_cast — const বা volatile কোয়ালিফায়ার যোগ বা বাদ দেওয়ার জন্য। শুধুমাত্র কোয়ালিফায়ার পরিবর্তন করে, টাইপ নয়।
  • reinterpret_cast — সবচেয়ে নিম্নস্তরের কাস্ট। বিট প্যাটার্ন রি-ইন্টারপ্রেট করে (যেমন পয়েন্টার → ইন্টিজার, ফাংশন পয়েন্টার কনভার্সন)। অতি সতর্কতায় ব্যবহার করুন।

সামান্য নির্দেশনা

  1. সাধারণ কনভার্সনে: static_cast
  2. পলিমরফিক ডাউনকাস্টে: dynamic_cast
  3. কনস্ট হटাতে: const_cast
  4. বিট-লেভেল রি-ইন্টারপ্রিটেশনে: reinterpret_cast
  5. C-style cast এড়ান — এটি বাগ লুকিয়ে রাখে।
  1. বাইনারি সার্চ C++ প্রোগ্রামে

  2. C++-এ static_cast, dynamic_cast, const_cast এবং reinterpret_cast কখন ব্যবহার করব?

  3. C++-এ রেগুলার কাস্ট vs static_cast vs dynamic_cast পার্থক্য

  4. C++-এ static_cast, dynamic_cast, const_cast, reinterpret_cast কখন ব্যবহার করবেন?