Avatar ·

C++ में reinterpret_cast का उपयोग कब करें और यह अन्य कास्ट से कैसे भिन्न है?

नमस्ते साथियों! मैं C++ सीख रहा हूँ और static_cast और dynamic_cast को अच्छी तरह समझ गया हूँ। लेकिन reinterpret_cast मेरे मन में सवाल और डर पैदा करता है। मैं समझता हूँ कि यह एक "बुरा" कास्ट है जो सिर्फ बिट्स को reinterpret करता है, लेकिन इसका वास्तव में उपयोग कब करना चाहिए?\n\nमैंने देखा कि किसी ने कोड में ऐसा किया:\n\n```cpp\nint* p = new int(42);\nchar* cp = reinterpret_cast(p);\n```\n\nलेकिन क्यों? आखिरकार, हम सिर्फ एड्रेस ले सकते हैं और उसके साथ काम कर सकते हैं। या फिर फंक्शन पॉइंटर कास्टिंग का यह उदाहरण:\n\n```cpp\ntypedef void (*FuncPtr)();\nFuncPtr f = reinterpret_cast(0x12345678);\n```\n\nक्या यह बिल्कुल वैध है? मुझे लगता है कि reinterpret_cast एक हैक है जो टाइप सिस्टम को तोड़ता है। लेकिन मैं जानता हूँ कि यह स्टैंडर्ड में मौजूद है, इसलिए इसके वैध उपयोग भी होने चाहिए।\n\nकृपया बताएं।