एक कास्ट एक विशेष ऑपरेटर है जो एक डेटा प्रकार को दूसरे में बदलने के लिए बाध्य करता है। एक ऑपरेटर के रूप में, एक कास्ट यूनरी होता है और किसी भी अन्य यूनरी ऑपरेटर के समान पूर्वता रखता है।
अधिकांश C++ कंपाइलरों द्वारा समर्थित सबसे सामान्य कास्ट इस प्रकार है -
(type) expression
वांछित डेटा प्रकार कहां है। C++ द्वारा समर्थित अन्य कास्टिंग ऑपरेटर हैं, वे नीचे सूचीबद्ध हैं -
- const_cast
(expr) - const_cast ऑपरेटर का उपयोग कास्ट में कॉन्स्टेबल और/या वोलेटाइल को स्पष्ट रूप से ओवरराइड करने के लिए किया जाता है। लक्ष्य प्रकार स्रोत प्रकार के समान होना चाहिए सिवाय इसके कॉन्स्ट या अस्थिर विशेषताओं के परिवर्तन को छोड़कर। इस प्रकार की कास्टिंग पास की गई वस्तु की const विशेषता को या तो सेट करने या हटाने के लिए हेरफेर करती है। - dynamic_cast
(expr) - डायनेमिक_कास्ट एक रनटाइम कास्ट करता है जो कास्ट की वैधता की पुष्टि करता है। यदि कास्ट नहीं किया जा सकता है, तो कास्ट विफल हो जाता है और अभिव्यक्ति शून्य हो जाती है। एक डायनेमिक_कास्ट पॉलीमॉर्फिक प्रकारों पर कास्ट करता है और ए * पॉइंटर को बी * पॉइंटर में तभी डाल सकता है जब वास्तव में जिस ऑब्जेक्ट की ओर इशारा किया जा रहा है वह बी ऑब्जेक्ट है। - reinterpret_cast
(expr) - reinterpret_cast ऑपरेटर एक पॉइंटर को किसी अन्य प्रकार के पॉइंटर में बदल देता है। यह पॉइंटर से एक पूर्णांक प्रकार में और इसके विपरीत कास्टिंग की भी अनुमति देता है। - static_cast
(expr) - static_cast ऑपरेटर एक गैर-पॉलीमॉर्फिक कास्ट करता है। उदाहरण के लिए, इसका उपयोग बेस क्लास पॉइंटर को व्युत्पन्न क्लास पॉइंटर में डालने के लिए किया जा सकता है।
उदाहरण
ये कास्ट बहुत ही केस स्पेसिफिक हैं। आइए संकलक द्वारा कार्यान्वित कास्ट के साथ एक उदाहरण पर विचार करें -
#include <iostream> using namespace std; main() { double a = 21.09399; float b = 10.20; int c ; c = (int) a; cout << "Line 1 - Value of (int)a is :" << c << endl ; c = (int) b; cout << "Line 2 - Value of (int)b is :" << c << endl ; return 0; }
आउटपुट
यह आउटपुट देगा -
Line 1 - Value of (int)a is :21 Line 2 - Value of (int)b is :10