(int)x হল C স্টাইলের টাইপকাস্টিং যেখানে static_cast
কাস্টের মতো সি-তে কখনও কখনও আমরা কিছু টাইপ পয়েন্টার কাস্ট করতে পারি অন্য কিছু টাইপ ডেটা নির্দেশ করতে। যেমন একটি পূর্ণসংখ্যা পয়েন্টার ক্যারেক্টার টাইপ ডেটাকে নির্দেশ করতে পারে, কারণ সেগুলি বেশ একই রকম, শুধুমাত্র পার্থক্য হল অক্ষরের 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
এটি কম্পাইল সময় ত্রুটি তৈরি করবে।