Reinterpret_cast कभी भी एक अलग पता नहीं लौटाएगा - सटीक पते की प्रतिलिपि बनाना आवश्यक है।
डेविड रोड्रिगेज जैसे कई विरासतों के मामलों में, आधारों में से एक का पता लेना उस पते को वापस कर सकता है जिसने पहले आधार के पते पर ऑफसेट किया है। Reinterpret_cast उस ऑफसेट पते को वापस कर देगा, लेकिन यदि आप इसे अपस्टास्ट पते के रूप में देखते हैं, तो नरक आ जाएगा।
उपेक्षा के लिए, static_cast किसी दिए गए से अलग पता वापस कर सकता है। यदि आपके पास पता है तो आधारों में से एक है, और वह पता पहले आधार पते पर ऑफसेट पर है, static_cast अपस्टेड ऑब्जेक्ट के लिए एक मान्य पता लौटाएगा, जो पहले आधार के पते के बराबर है और इस प्रकार बराबर नहीं है सूचक पास करने के लिए।
इसे छोटा करने के लिए: reinterpret_cast आपको हमेशा एक ही पता देता है। Static_cast और dynamic_cast एक अलग पता लौटा सकता है, उदा। कई मामलों में कई विरासत शामिल हैं।
static_cast और dynamic_cast के बीच का अंतर यह है कि static_cast यह जांच नहीं करता है कि आप जो पॉइंटर देते हैं वह कास्ट के लिए सही वस्तु है, इसलिए इसे कॉल करने से पहले सुनिश्चित करें।
आपका मतलब है, "मूल्य बदलता है" सूचक बिंदु? – akira
@किरा: नहीं, सूचक के मूल्य को बदलता है – sharptooth
आपका मतलब है: 'टी * टी = 0x13; क्यू * क्यू = 0x42; टी = reintrepret_cast