Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

सी ++ में कास्ट कास्ट

कार्य को देखते हुए C++ में const_cast की कार्यप्रणाली को दिखाना है।

const_cast टाइप कास्टिंग ऑपरेटरों में से एक है। इसका उपयोग किसी वस्तु के स्थिर मान को बदलने के लिए किया जाता है या हम कह सकते हैं कि इसका उपयोग किसी वस्तु की निरंतर प्रकृति को दूर करने के लिए किया जाता है।

const_cast का उपयोग उन प्रोग्रामों में किया जा सकता है जिनमें कुछ स्थिर मूल्य वाली कोई वस्तु होती है जिसे कभी-कभी किसी बिंदु पर बदलने की आवश्यकता होती है।

सिंटैक्स

वाक्य रचना इस प्रकार है -

const_cast<प्रकार का नाम>(अभिव्यक्ति)

उदाहरण

इनपुट:x =50const int* y =&xcout<<"पुराना मान है"<<*y<<"\n";int* z=const_cast(y);*z=100;cout <<"नया मान है"<<*y;आउटपुट:पुराना मान 50 हैनया मान 100 है

निम्नलिखित उदाहरण const_cast का मूल उपयोग दिखाता है। यहां हमने int प्रकार का एक निरंतर चर "x" घोषित किया है जिसे 50 का मान दिया गया है और एक अन्य स्थिर सूचक "y" प्रकार int है जो चर "x" पर इंगित करता है।

const_cast का उपयोग करने के लिए एक तीसरा पॉइंटर बनाया जाना है, और यहां हमने उसी डेटा प्रकार का पॉइंटर "z" बनाया है, जो कि int है।

इसलिए जब हम अपने निरंतर सूचक "y" को पास करते हैं, जो स्थिर चर "x" को const_cast में इंगित करता है, और सूचक z को एक मान निर्दिष्ट करता है, तो हम अपने स्थिर सूचक "y" के मान में परिवर्तन करने में सक्षम होते हैं। पी>

इस तरह हम const_cast का उपयोग करके स्थिर मान को 50 से 100 में बदलने में सक्षम थे।

यदि हम "x" के मान को बदलने की कोशिश करते हैं, जो कि पॉइंटर "y" बिना const_cast का उपयोग किए इंगित कर रहा है, तो निम्न त्रुटि दिखाई देगी- "केवल पढ़ने के लिए का असाइनमेंट" स्थान”

निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है -

  • पहले int प्रकार का एक स्थिर चर बनाएं और इसे कुछ उपयुक्त आकार दें, मान लें कि "a" और इसका मान 20 है।
  • फिर एक स्थिर पॉइंटर बनाएं, हम उसी डेटा प्रकार का "बी" कहें और इसे हमारे निरंतर चर "ए" का पता आवंटित करें।
  • फिर एक तीसरा पॉइंटर बनाएं, मान लें कि डेटा प्रकार int का "c" const_cast के लिए उपयोग किया जाना है।
  • अब हमारे कॉन्स्टेंट पॉइंटर “b” को const_cast में पास करें और इसे हमारे पॉइंटर “c” के बराबर रखें।
  • आखिरकार हमारे पॉइंटर “c” के मान में बदलाव करें। यह स्वचालित रूप से उस मान में परिवर्तन करेगा जिस पर हमारा स्थिर सूचक "बी" इंगित कर रहा है।

एल्गोरिदम

स्टार्टस्टेप 1 -> फंक्शन में मुख्य() एक स्थिर इंट घोषित करें a=20 एक स्थिर पॉइंटर घोषित करें int* b=&a एक पॉइंटर घोषित करें int*c =const_cast(b) असाइन करें *c=40Stop पूर्व> 

उदाहरण

#include नामस्थान का उपयोग करना std;int main() { const int a =20; कास्ट इंट * बी =&ए; cout<<"पुराना मान है"<<*b<<"\n"; int* c=const_cast(b); *सी=40; cout<<"नया मान है"<<*b; वापसी 0;}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

पुराना मान 20 हैनया मान 40 है

यहां, निरंतर सूचक "बी" को स्थिर चर "ए" पर मूल्य =20 के साथ इंगित किया जाता है जो अपरिवर्तनीय है। लेकिन एक ही डेटा प्रकार का तीसरा गैर-स्थिर सूचक "c" बनाकर और const_cast का उपयोग करके हम उस स्थिर मान को बदलने में सक्षम हैं।

सूचक "सी" के मूल्य में परिवर्तन के परिणामस्वरूप स्थिर मूल्य 20 में परिवर्तन हुआ जिस पर स्थिर सूचक "बी" इंगित कर रहा था। इसलिए const_cast का उपयोग करने से पहले आउटपुट मान 20 था और इसका उपयोग करने के बाद आउटपुट मान 40 था।

const_cast के अन्य उपयोग

किसी भी प्रोग्राम में, const_cast का उपयोग निरंतर डेटा को किसी अन्य फ़ंक्शन को पास करने के लिए किया जा सकता है जो निरंतर डेटा स्वीकार नहीं करता है।

उदाहरण

#include नामस्थान का उपयोग कर; int change(int* p2) {रिटर्न (*p2 * 10);}int main() { const int num =100; const int *p =# int *p1 =const_cast (p); cout <<परिवर्तन (पी 1); वापसी 0;}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

1000

निम्न प्रोग्राम दिखाता है कि कैसे हम किसी भी स्थिर डेटा को प्राप्त नहीं करने वाले फ़ंक्शन चेंज () में const_cast का उपयोग करके 100 का एक निरंतर मान पास करने में सक्षम हैं।

परिवर्तन () फ़ंक्शन मान प्राप्त करता है और इसे 10 से गुणा करता है और इसे मुख्य () फ़ंक्शन पर वापस लौटाता है जो अंतिम आउटपुट, यानी 1000 उत्पन्न करता है।

यदि हम बिना const_cast के समान प्रोग्राम चलाते हैं और स्थिर मान को सीधे change() फ़ंक्शन में पास करने का प्रयास करते हैं, तो यह त्रुटियाँ दिखाएगा।


  1. C/C++ में टाइप कास्ट क्या है?

    टाइप कास्टिंग एक चर को एक डेटा प्रकार से दूसरे डेटा प्रकार में बदलने का एक तरीका है। उदाहरण के लिए, यदि आप एक लॉन्ग वैल्यू को एक साधारण पूर्णांक में स्टोर करना चाहते हैं तो आप लॉन्ग से इंट टाइप कर सकते हैं। आप कास्ट ऑपरेटर . का उपयोग करके स्पष्ट रूप से मानों को एक प्रकार से दूसरे प्रकार में परिवर्ति

  1. हम सी ++ में कॉन्स्ट क्वालिफायर का उपयोग क्यों करते हैं?

    हम एक चर को स्थिर घोषित करने के लिए const qualifier का उपयोग करते हैं। इसका मतलब है कि एक बार वेरिएबल को इनिशियलाइज़ करने के बाद हम वैल्यू को नहीं बदल सकते। कॉन्स्ट का इस्तेमाल करने से बहुत बड़ा फायदा होता है। उदाहरण के लिए, यदि आपके पास PI के मान का निरंतर मान है, तो आप उस मान को संशोधित करने के लि

  1. C++ में कॉन्स्टेबल कीवर्ड क्या है?

    हम एक चर को स्थिर घोषित करने के लिए const qualifier का उपयोग करते हैं। इसका मतलब है कि एक बार वेरिएबल को इनिशियलाइज़ करने के बाद हम वैल्यू को नहीं बदल सकते। कॉन्स्ट का इस्तेमाल करने से बहुत बड़ा फायदा होता है। उदाहरण के लिए, यदि आपके पास PI के मान जैसा स्थिर मान है, तो आप उस मान को संशोधित करने के ल