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

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

static_cast

সাধারণ টাইপ কনভারশনের জন্য। ইমপ্লিসিট কনভারশন যা বৈধ (যেমন float থেকে int, char থেকে int), সেগুলো এক্সপ্লিসিটলি করার জন্য। কম্পাইল-টাইম চেক করে।

dynamic_cast

পলিমরফিজম হ্যান্ডল করার জন্য। বেস ক্লাস পয়েন্টার/রেফারেন্স থেকে ডেরাইভড ক্লাসে ডাউনকাস্ট (downcast) করার সময়। রান-টাইম চেক করে (RTTI আপেক্ষিক)। শুধু পলিমরফিক ক্লাসে (ভার্চুয়াল ফাংশন থাকা ক্লাসে) কাজ করে।

রেগুলার কাস্ট (C-স্টাইল কাস্ট)

সবচেয়ে শক্তিশালী কিন্তু অনসেফ। const_cast + static_cast + reinterpret_cast-র কম্বিনেশন। dynamic_cast করছে না। এড়ানো উচিত।

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

  • const_cast: const যোগ/বাদ দেওয়া (সুবিধাজনক কিন্তু সতর্কতা বাঞ্ছনীয়)।
  • reinterpret_cast: বিট প্যাটার্ন পুনর্ব্যাখ্যা, নিম্ন-স্তরের ম্যানিপুলেশন (যেমন পয়েন্টার থেকে ইন্টিজার, ফাংশন পয়েন্টার কনভারশন)। অত্যন্ত বিপজ্জনক।

সারাংশ: প্রাথমিকতা: static_cast > dynamic_cast (যদি পলিমরফিজম) > const_cast > reinterpret_cast। C-স্টাইল কাস্ট ব্যবহার করবেন না।

  1. C/C++-এ টাইপ কাস্টিং (Type Casting) কী?

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

  3. C++-এ কাস্টিং অপারেটরসমূহ

  4. লিনাক্সে C++-এর জন্য সেরা IDE কী?