আমি সামান্য এর প্রযোজ্যতা সঙ্গে গুলিয়ে ফেলা করছি reinterpret_cast
বনাম static_cast
। আমি সাধারণ নিয়মগুলি যা পড়েছি তা থেকে স্থির কাস্ট ব্যবহার করা হয় যখন শব্দগুলি সংকলন করার সময় প্রকারের অর্থ ব্যাখ্যা করা যায় static
। অন্তর্নিহিত ক্যাসেটগুলির জন্যও সি ++ সংকলক অভ্যন্তরীণভাবে ব্যবহার করে castালাই।
reinterpret_cast
গুলি দুটি পরিস্থিতিতে প্রযোজ্য:
- পূর্ণসংখ্যার প্রকারকে পয়েন্টার ধরণের এবং বিপরীতে রূপান্তর করুন
- একটি পয়েন্টার টাইপকে অন্যটিতে রূপান্তর করুন। আমি যে সাধারণ ধারণাটি পাই তা হ'ল অপ্রয়োজনীয় এবং এড়ানো উচিত।
যেখানে আমি একটু বিভ্রান্ত হচ্ছি সেগুলির একটি প্রয়োজন যা আমার প্রয়োজন, আমি সি থেকে সি ++ কল করছি এবং সি কোডটির সি ++ অবজেক্ট ধরে রাখা দরকার তাই মূলত এটি একটি থাকে void*
। void *
ক্লাসের ধরণের মধ্যে রূপান্তর করতে কোন কাস্ট ব্যবহার করা উচিত ?
আমি উভয়ের ব্যবহার দেখেছি static_cast
এবং reinterpret_cast
? যদিও আমি যা পড়ছি তা থেকে মনে static
হচ্ছে এটি সংকলনের সময় কাস্টটি ঘটতে পারে বলে ভাল? যদিও এটি reinterpret_cast
এক পয়েন্টার টাইপ থেকে অন্য পয়েন্টারে রূপান্তর করতে ব্যবহার করতে বলে ?
reinterpret_cast
রান সময় হয় না। তারা উভয় সংকলন-সময় বিবৃতি। En.cppreferences.com/w/cpp/language/reinter ব্যাখ্যা_cast থেকে : "স্ট্যাটিক_কাস্টের মতো নয়, তবে কনস্ট_কাস্টের মতো, পুনরায় ব্যাখ্যা_কাস্ট এক্সপ্রেশন কোনও সিপিইউ নির্দেশাবলীর সাথে সংকলন করে না pure অভিব্যক্তির (অবজেক্ট উপস্থাপনা) যেন নতুন টাইপ টাইপ করে। "