मैं reinterpret_castबनाम की प्रयोज्यता से थोड़ा भ्रमित हूं static_cast। जब मैंने सामान्य नियमों को पढ़ा है, तब से स्टेटिक कास्ट का उपयोग किया जाता है जब संकलन समय पर व्याख्या की जा सकती है इसलिए शब्द static। यह वह C है जो C ++ कंपाइलर आंतरिक रूप से निहित कास्ट के लिए भी उपयोग करता है।
reinterpret_casts दो परिदृश्यों में लागू होते हैं:
- पूर्णांक प्रकारों को सूचक प्रकारों में परिवर्तित करें और इसके विपरीत
- एक सूचक प्रकार को दूसरे में बदलें। मुझे जो सामान्य विचार मिलता है, वह अप्रमाणिक है और इसे टाला जाना चाहिए।
जहाँ मैं थोड़ा उलझन में हूँ एक उपयोग है जिसकी मुझे आवश्यकता है, मैं C ++ को C से कॉल कर रहा हूँ और C कोड को C ++ ऑब्जेक्ट पर रखने की आवश्यकता है, इसलिए मूल रूप से यह एक है void*। void *वर्ग और वर्ग प्रकार के बीच कनवर्ट करने के लिए किस कास्ट का उपयोग किया जाना चाहिए ?
मैंने दोनों का उपयोग देखा है static_castऔर reinterpret_cast? यद्यपि मैं जो पढ़ रहा हूं, उससे यह प्रतीत होता है staticकि बेहतर है क्योंकि कलाकारों का संकलन समय पर हो सकता है? हालांकि यह reinterpret_castएक पॉइंटर प्रकार से दूसरे में बदलने के लिए उपयोग करने के लिए कहता है ?
reinterpret_castरन टाइम पर नहीं होता है। वे दोनों संकलन-समय कथन हैं। से en.cppreference.com/w/cpp/language/reinterpret_cast : "विपरीत static_cast, लेकिन const_cast की तरह, reinterpret_cast अभिव्यक्ति किसी भी सीपीयू निर्देशों के संकलन नहीं है यह पूरी तरह एक संकलक निर्देश जो संकलक का निर्देश बिट्स के अनुक्रम के इलाज के लिए है। अभिव्यक्ति के (ऑब्जेक्ट प्रतिनिधित्व) के रूप में अगर यह new_type था। "