সমাধান করা হয়েছে: static_cast

সর্বশেষ আপডেট: 09/11/2023
লেখক: C SourceTrail

অবশ্যই, এখানে এটি যায়:

C++ প্রোগ্রামিং এর জগতে, আপনাকে প্রায়ই প্রকারগুলি রূপান্তর করতে হবে। রূপান্তরটি একটি সাধারণ ডেটা টাইপ থেকে একটি জটিল টাইপ হতে পারে, একটি প্রাপ্ত শ্রেণী থেকে একটি বেস শ্রেণীতে, অথবা যে কোন প্রদত্ত প্রকার থেকে অন্য কোন প্রকারে হতে পারে। C++ এই রূপান্তরগুলি সম্পাদন করার জন্য চারটি কাস্টিং প্রক্রিয়া প্রদান করে: `static_cast`, `dynamic_cast`, `reinterpret_cast`, এবং C++ শৈলী কাস্ট। এই নিবন্ধে, আমরা `static_cast` নিয়ে বিস্তারিত আলোচনা করব।

C++ এ, `static_cast` একটি কম্পাইল-টাইম কাস্ট অপারেটর। এটি মূলত সাংখ্যিক ডেটা প্রকারের রূপান্তরের জন্য ব্যবহৃত হয় যেমন একটি `ডাবল`কে `int` তে রূপান্তর করা বা `int` থেকে `ফ্লোট`-এ রূপান্তর করা ইত্যাদি। যাইহোক, এর ব্যবহার কেবলমাত্র সংখ্যাসূচক ডেটা প্রকারের রূপান্তরের মধ্যে সীমাবদ্ধ নয়।

[h2] স্ট্যাটিক কাস্ট বোঝা [/h2]

`static_cast` এর সিনট্যাক্স নিম্নরূপ:

static_cast < new_type > ( অভিব্যক্তি )

এখানে, নতুন ধরনের আপনি অভিব্যক্তি রূপান্তর করতে চান টাইপ. অভিব্যক্তিতে ভেরিয়েবল, আক্ষরিক বা ধ্রুবক অন্তর্ভুক্ত থাকতে পারে।

আসুন একটি ধাপে ধাপে ব্যাখ্যা করি কিভাবে `static_cast` কাজ করে।

প্রথমত, আমাদের কোডে লাইব্রেরি অন্তর্ভুক্ত করতে হবে।

# অন্তর্ভুক্ত

তারপর, আমাদের প্রধান ফাংশনে, আসুন একটি পূর্ণসংখ্যা ভেরিয়েবল 'a' ঘোষণা করি এবং এটিতে 7 মান নির্ধারণ করি। এর পরে, আমরা 22.0 এর সমান একটি ফ্লোট ভেরিয়েবল 'b' ঘোষণা করি।

int প্রধান () {
int a = 7;
float b = 22.0;
}

এর পরে, আমরা এই ভেরিয়েবলগুলিকে অন্য প্রকারে রূপান্তর করতে `static_cast` ব্যবহার করি।

int প্রধান () {
...
float c = static_cast(এতে);
int d = static_cast(খ);
}

এখানে, টাইপ পূর্ণসংখ্যার ভেরিয়েবল 'a' কে ফ্লোটে রূপান্তরিত করা হয়েছে এবং ভেরিয়েবল 'c'-এ বরাদ্দ করা হয়েছে। একইভাবে, ফ্লোটের ভেরিয়েবল 'b'কে পূর্ণসংখ্যায় রূপান্তরিত করা হয়েছে এবং ভেরিয়েবল 'd'-এ বরাদ্দ করা হয়েছে। `static_cast` অপারেটর কম্পাইল-টাইমে এই রূপান্তরটি সম্পাদন করে।

[h2] স্ট্যাটিক_কাস্টের সাথে সতর্কতা [/h2]

যদিও `static_cast` একটি শক্তিশালী টুলের মতো মনে হতে পারে, প্রোগ্রামারদের টাইপ রূপান্তরের জন্য এটি ব্যবহার করার সময় সতর্কতা অবলম্বন করতে হবে। এই জন্য দুটি প্রধান কারণ আছে:

  • `static_cast` রান-টাইম টাইপ চেকিং করে না। এর মানে হল যে আপনি যদি একটি বেমানান টাইপ রূপান্তর করার চেষ্টা করেন তবে এটি একটি ত্রুটি নিক্ষেপ করবে না।
  • বেস ক্লাস পয়েন্টার বা রেফারেন্সকে একটি প্রাপ্ত ক্লাস পয়েন্টার বা রেফারেন্সে রূপান্তর করতে `static_cast` ব্যবহার করে, বেস ক্লাস অবজেক্টটি প্রাপ্ত ক্লাসের একটি সম্পূর্ণ অবজেক্ট তা নিশ্চিত না করে, ভুল ফলাফল হতে পারে।

সংক্ষেপে বলতে গেলে, `static_cast` হল C++ দ্বারা প্রদত্ত কাস্টিং অপারেটরগুলির মধ্যে একটি, যা বেশিরভাগই সংখ্যাসূচক ডেটা প্রকারের রূপান্তরের জন্য ব্যবহৃত হয়। যাইহোক, এটির অপব্যবহার না করার বিষয়ে সতর্ক থাকতে হবে, কারণ এটি অবাঞ্ছিত ফলাফলের দিকে নিয়ে যেতে পারে। এই পয়েন্টগুলি মাথায় রেখে, আপনি আপনার C++ প্রোগ্রামে কার্যকরভাবে `static_cast` ব্যবহার করতে পারেন।

সম্পর্কিত পোস্ট:

মতামত দিন