কম্পিউটার

কেন C++ এ (int) x এর পরিবর্তে static_cast(x) ব্যবহার করবেন?


(int)x হল C স্টাইলের টাইপকাস্টিং যেখানে static_cast(x) C++ এ ব্যবহৃত হয়। এই static_cast<>() কম্পাইল টাইম চেকিং সুবিধা দেয়, কিন্তু C শৈলী কাস্টিং এটি সমর্থন করে না। এই static_cast<>() একটি C++ কোডের ভিতরে যে কোন জায়গায় দেখা যাবে। এবং এই C++ কাস্ট ব্যবহার করে ইনটেনশন অনেক ভালোভাবে জানানো হয়।

কাস্টের মতো সি-তে কখনও কখনও আমরা কিছু টাইপ পয়েন্টার কাস্ট করতে পারি অন্য কিছু টাইপ ডেটা নির্দেশ করতে। যেমন একটি পূর্ণসংখ্যা পয়েন্টার ক্যারেক্টার টাইপ ডেটাকে নির্দেশ করতে পারে, কারণ সেগুলি বেশ একই রকম, শুধুমাত্র পার্থক্য হল অক্ষরের 1-বাইট আছে, পূর্ণসংখ্যার 4-বাইট রয়েছে। C++ তে static_cast<>() কাস্টিং-এর মতো C-এর চেয়ে বেশি কঠোর। এটি শুধুমাত্র সামঞ্জস্যপূর্ণ প্রকারের মধ্যে রূপান্তর করে৷

উদাহরণ কোড

char c = 65; //1-byte data. ASCII of ‘A’
int *ptr = (int*)&c; //4-byte

যেহেতু একটি 4-বাইট পয়েন্টারে, এটি বরাদ্দ করা মেমরির 1-বাইটের দিকে নির্দেশ করছে, এটি রানটাইম ত্রুটি তৈরি করতে পারে বা কিছু সংলগ্ন মেমরি ওভাররাইট করবে৷

C++ এ static_cast<>() কম্পাইলারকে পয়েন্টার এবং ডেটা একই ধরনের কিনা তা পরীক্ষা করার অনুমতি দেবে। যদি না হয় তবে এটি সংকলনের সময় ভুল পয়েন্টার অ্যাসাইনমেন্ট ব্যতিক্রম উত্থাপন করবে।

char c = 65; //1-byte data. ASCII of ‘A’
int *ptr = static_cast<int>(&c);
এর ASCII

এটি কম্পাইল সময় ত্রুটি তৈরি করবে।


  1. C++ এ মিডির উপপাদ্য

  2. C++ এ একটি ম্যাট্রিক্সের নির্ধারক?

  3. C++ এ পরিসীমা সংযোজন

  4. C++ এ রেখার প্রতিফলন