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

C++-এ টাইপ কাস্টিং অপারেটর (Type Casting Operators)


একটি কাস্ট (cast) হল একটি স্পেশাল অপারেটর যা এক ডেটা টাইপকে অন্য ডেটা টাইপে কনভার্ট করার বাধ্য করে। একটি অপারেটর হিসেবে, কাস্ট ইউনারি (unary) এবং অন্য যেকোনো ইউনারি অপারেটরের মত একই প্রসিডেন্স রাখে।

অधিকাংশ C++ কম্পাইলার দ্বারা সমর্থিত সবচেয়ে সাধারণ কাস্ট নিচের মত:

(type) expression

যেখানে type হলো কাঙ্ক্ষিত ডেটা টাইপ। C++-এ অন্যান্য কাস্টিং অপারেটরও রয়েছে, সেগুলো নিচে তালিকাভুক্ত:

  • const_cast<type> (expr) const_cast অপারেটর const এবং/অথবা volatile এক্সপ্লিসিটলি ওভাররাইড করতে ব্যবহৃত হয়। টার্গেট টাইপ সোর্স টাইপের সমান হতে হবে শুধু const বা volatile অ্যাট্রিবিউট বাদে। এই ধরনের কাস্টিং পাস করা অবজেক্টের const অ্যাট্রিবিউট ম্যানিপুলেট করে, সেট করা বা বাদ দেওয়া।

  • dynamic_cast<type> (expr) dynamic_cast রানটাইম কাস্ট পারফর্ম করে যা কাস্টের বৈধতা যাচাই করে। যদি কাস্ট করা সম্ভব না হয়, তবে কাস্ট ফেইল করে এবং এক্সপ্রেশন null-এ ইভ্যালুয়েট হয়। dynamic_cast পলিমরফিক টাইপে কাস্ট পারফর্ম করে এবং A* পয়েন্টারকে B* পয়েন্টারে কাস্ট করতে পারে শুধুমাত্র যদি অবজেক্টটি আসলে B অবজেক্ট হয়।

  • reinterpret_cast<type> (expr) reinterpret_cast অপারেটর একটি পয়েন্টারকে যেকোনো অন্য টাইপের পয়েন্টারে চেঞ্জ করে। এটি পয়েন্টার থেকে ইন্টিজার টাইপে এবং তার বিপরীতে কাস্ট করার অনুমতি দেয়।

  • static_cast<type> (expr) static_cast অপারেটর নন-পলিমরফিক কাস্ট পারফর্ম করে। উদাহরণস্বরূপ, এটি বেস ক্লাস পয়েন্টারকে ডেরাইভড ক্লাস পয়েন্টারে কাস্ট করতে ব্যবহার করা যায়।

উপরের সব কাস্টিং অপারেটর ক্লাস এবং অবজেক্টের সাথে কাজ করার সময় ব্যবহার হয়। এখন নিচের উদাহরণ চেষ্টা করুন সিম্পল কাস্ট অপারেটর বুঝতে। নিচের C++ প্রোগ্রামটি test.cpp ফাইলে কপি-পেস্ট করে কম্পাইল ও রান করুন।

উদাহরণ কোড

#include <iostream>
using namespace std;

main() {
    double a = 21.09399;
    float b = 10.20;
    int c;
    c = (int) a;
    cout << "Line 1 - Value of (int)a is: " << c << endl;
    c = (int) b;
    cout << "Line 2 - Value of (int)b is: " << c << endl;
    return 0;
}

আউটপুট

Line 1 - Value of (int)a is: 21
Line 2 - Value of (int)b is: 10
  1. C/C++-এ টাইপ কাস্টিং (Type Casting) কী?

  2. C++-এ বিটওয়াইজ অপারেটরসমূহ

  3. C++-এ রিলেশনাল অপারেটর

  4. C++-এ এরিথমেটিক অপারেটর