The (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
यह संकलन समय त्रुटि उत्पन्न करेगा।