डायनामिक_कास्ट सी ++

Dayanamika Kasta Si



C++ प्रोग्रामिंग लैंग्वेज में डायनामिक कास्ट पर इस लेख में चर्चा की जाएगी। आरंभ करने के लिए, हमें ढलाई की धारणा और कई प्रकार की ढलाई को समझना चाहिए। चर के डेटा प्रकार को बदलने की प्रक्रिया को कास्टिंग के रूप में जाना जाता है। C++ प्रोग्रामिंग लैंग्वेज में कास्टिंग को दो श्रेणियों में बांटा गया है: निहित कास्टिंग और स्पष्ट कास्टिंग।

सी ++ में डेटा प्रकार रूपांतरण:

टाइप कास्टिंग डेटा प्रकार को किसी अन्य डेटा प्रकार में बदलने की प्रक्रिया है। C++ प्रोग्रामिंग लैंग्वेज में दो प्रकार के कास्टिंग या टाइप रूपांतरण होते हैं: निहित और स्पष्ट कास्टिंग। स्वचालित प्रकार का रूपांतरण अंतर्निहित टाइपकास्टिंग का दूसरा नाम है। यह वास्तविक समय संकलन के दौरान संकलक द्वारा किया जाता है और इसके लिए किसी उपयोगकर्ता इनपुट या क्रिया की आवश्यकता नहीं होती है। जब किसी व्यंजक में दो प्रकार के डेटा प्रकार होते हैं, तो कास्टिंग का यह रूप होता है। उदाहरण के लिए:

  ग्राफिकल यूजर इंटरफेस, टेक्स्ट, एप्लिकेशन विवरण स्वचालित रूप से जेनरेट किया गया







दिए गए कोड में, हम देख सकते हैं कि अंतिम पंक्ति अभिव्यक्ति में एक पूर्णांक चर और एक वर्ण चर डाला गया है, और पूर्णांक चर 'i' का मान बदल गया है। 'ए' के समतुल्य ASCII संख्या को एक वर्ण मान में परिवर्तित किया जाएगा और इस कथन में चर 'i' के पूर्णांक मान में जोड़ा जाएगा। यदि चर 'i' का मान मुद्रित किया जाता है, तो परिणाम इन दोनों मानों का योग होगा। संकलक स्वचालित रूप से वर्ण चर के डेटा प्रकार को एक पूर्णांक डेटा प्रकार में परिवर्तित करके इसे दाईं ओर वर्णमाला के ASCII मानक मान में परिवर्तित कर देता है, जो रन टाइम पर अंतर्निहित या स्वचालित प्रकार रूपांतरण का एक बड़ा उदाहरण है।



अब, जब स्पष्ट टाइप कास्टिंग या टाइप रूपांतरण की बात आती है, तो यह एक स्वचालित प्रक्रिया नहीं है; उपयोगकर्ता को कोड में एक चर के डेटा प्रकार को दूसरे प्रकार के चर में मैन्युअल रूप से परिवर्तित करना होगा। डेटा प्रकार आमतौर पर उनकी मेमोरी स्पेस और उनके द्वारा धारण की जाने वाली जानकारी की मात्रा के आधार पर पदानुक्रम में व्यवस्थित होते हैं। इसलिए, जब किसी सूचना को संग्रहीत करने के लिए निम्न क्रम डेटा प्रकार का उपयोग किया जाता है, लेकिन उसे उच्च-क्रम डेटा प्रकार में बदलना होता है ताकि सूचना हानि को कम किया जा सके और अधिक से अधिक जानकारी संग्रहीत की जा सके, स्पष्ट प्रकार कास्टिंग या प्रकार रूपांतरण आमतौर पर होता है किया हुआ। उदाहरण के लिए, क्योंकि एक पूर्णांक प्रकार का चर दशमलव बिंदु के बाद मानों को संग्रहीत नहीं कर सकता है, यदि हम पूर्णांक चर का उपयोग करना जारी रखते हैं तो हम कुछ जानकारी खो सकते हैं। इस हानि से बचने के लिए, हम पूर्णांक चर को फ्लोट चर में परिवर्तित करते हैं, दशमलव बिंदुओं के बाद मानों को सहेजते हैं और सूचना हानि को रोकते हैं। सी ++ प्रोग्रामिंग भाषा में स्पष्ट प्रकार का रूपांतरण दो तरीकों में से एक में पूरा किया जा सकता है: असाइनमेंट के माध्यम से या कास्ट ऑपरेटर का उपयोग करके। असाइनमेंट रूपांतरण एक कोड एक्सप्रेशन में किया जाता है, और इस एक्सप्रेशन के लिए सिंटैक्स नीचे दिया गया है।



# '(डेटा प्रकार) अभिव्यक्ति'

उपरोक्त कोड में, हमें ब्रैकेट के भीतर एक वैध डेटा प्रकार रखना होगा, और ब्रैकेट के बाद, हमें वेरिएबल या एक्सप्रेशन लिखना होगा जिसे हम ब्रैकेट के अंदर लिखे गए डेटा प्रकार में संशोधित करना चाहते हैं।





अब हम C++ प्रोग्रामिंग लैंग्वेज में कास्ट ऑपरेटर्स द्वारा किए गए रूपांतरण के प्रकार पर गौर करेंगे। कास्ट ऑपरेटरों को यूनरी ऑपरेटर्स भी कहा जाता है जो एक चर को अपने डेटा प्रकार को एक मौजूदा से दूसरे में बदलने के लिए मजबूर करते हैं। चार प्रकार के कास्टिंग कास्ट ऑपरेटर हैं: स्टेटिक कास्ट, डायनेमिक कास्ट, कास्ट कास्ट और री-इंटरप्रिट कास्ट।

सी ++ में गतिशील कास्टिंग:

C++ प्रोग्रामिंग लैंग्वेज में डायनामिक कास्टिंग RTTI (रन टाइम टाइप आइडेंटिफिकेशन) नामक अवधारणा पर आधारित है। RTTI कई प्रोग्रामिंग भाषाओं जैसे C/C++, Ada, और Object Pascal में मौजूद एक फ़ंक्शन है। रन-टाइम टाइप आइडेंटिफिकेशन या इंफॉर्मेशन एक ऐसा फंक्शन है जो किसी प्रोग्राम के रन टाइम पर किसी ऑब्जेक्ट के डेटा टाइप के विवरण के बारे में जानकारी की पहचान करता है और उसे निकालता है। यह फ़ंक्शन टाइप कास्टिंग विधियों जैसे 'टाइपिड' फ़ंक्शन या डायनामिक टाइप कास्टिंग के लिए एक सुरक्षित पथ प्रदान करता है। यह रन टाइम पर डेटा प्रकार की जानकारी का पता लगाता है और ऑपरेटरों के खेलने पर डेटा प्रकार के रूपांतरण में सहायता करता है।



रन-टाइम सुरक्षित डाउन कास्टिंग के लिए डायनामिक कास्टिंग का उपयोग ज्यादातर C++ में किया जाता है। डायनेमिक कास्ट के साथ काम करने के लिए, बेस क्लास में 1 वर्चुअल फ़ंक्शन होना चाहिए। डायनेमिक कास्ट केवल पॉलीमॉर्फिक बेस क्लास के साथ काम करता है क्योंकि यह सुरक्षित डाउन कास्टिंग निर्धारित करने के लिए इस जानकारी का उपयोग करता है। डायनेमिक कास्ट ऑपरेटर डायनेमिक कास्टिंग करता है। अब जब हम डायनेमिक कास्टिंग से संबंधित अवधारणाओं के बारे में जानते हैं, तो हम कार्यान्वयन भाग की ओर जा सकते हैं। आइए सबसे पहले C++ प्रोग्रामिंग लैंग्वेज में डायनामिक कास्टिंग का उपयोग करने के लिए सिंटैक्स को देखें, जो नीचे लिखा गया है:

# 'गतिशील_कास्ट (अभिव्यक्ति)'

उपरोक्त अभिव्यक्ति में, पहला भाग ऑपरेटर के नाम का वर्णन करता है; कोण कोष्ठक में, हम उस डेटा प्रकार का नाम लिखते हैं जिसे हमें अपनी अभिव्यक्ति को परिवर्तित करने की आवश्यकता होती है, और गोल कोष्ठक में, हम उस चर या वस्तु का नाम लिखते हैं जिसे हम परिवर्तित करना चाहते हैं।

अब जब हम जानते हैं कि डायनेमिक कास्ट ऑपरेटर का उपयोग कैसे करना है और डेटा प्रकार के चर को परिवर्तित करने के लिए पैरामीटर भरना है, तो हम इसका उपयोग डेटा प्रकार के चर को परिवर्तित करने के लिए कर सकते हैं।

Ubuntu 20.04 में डायनामिक कास्ट विधि का उपयोग करना:

इस अवधारणा को लागू करने के लिए, हमें विरासत द्वारा वर्ग की वस्तुओं को परिवर्तित करने के लिए काम करने के लिए कई वर्गों का उपयोग करना चाहिए। इसलिए, पहले ऐसा करने के लिए, हमें पहले यह जानना होगा कि उबंटू वातावरण में C++ प्रोग्राम फ़ाइल '.cpp' एक्सटेंशन के साथ संग्रहीत है, इसलिए इस फ़ाइल को अपने डेस्कटॉप पर बनाने के लिए, एक टर्मिनल खोलें और 'सीडी डेस्कटॉप' टाइप करें। कमांड लाइन, फिर एंटर दबाएं और '.cpp' एक्सटेंशन वाली फाइल बनाने के लिए 'टच फाइलनेम .cpp' टाइप करें। अब हम उस फाइल में एक बेस क्लास और 2 डिराइव्ड क्लास बनाने के लिए एक कोड लिखेंगे, और ड्राइवर कोड में, हम डायनामिक कास्ट ऑपरेटर का उपयोग करेंगे।

  ग्राफिकल यूजर इंटरफेस, पाठ विवरण स्वचालित रूप से उत्पन्न

सेव बटन पर क्लिक करने के बाद फाइल से बाहर निकलें। टर्मिनल पर लौटें और अपने फ़ाइल नाम और '.cpp' एक्सटेंशन के साथ 'g++' कमांड का उपयोग करके फ़ाइल बनाएं। इस आदेश का उपयोग करके '.out' एक्सटेंशन वाली एक फ़ाइल बनाई जाएगी। अब आप उस फ़ाइल को './' दर्ज करके अपने '.out' एक्सटेंशन के बाद चला सकते हैं।
  टेक्स्ट विवरण स्वचालित रूप से जेनरेट किया गया

इस कार्यक्रम में, बेस क्लास पॉइंटर स्टोर क्लास 1 ऑब्जेक्ट्स (डी 1) को व्युत्पन्न करता है। डायनेमिक कास्टिंग बेस क्लास, पॉइंटर ने Derived1 ऑब्जेक्ट को बनाए रखा और इसे व्युत्पन्न क्लास 1 में आवंटित किया, जो वैध डायनेमिक कास्टिंग प्रदान करता है।

निष्कर्ष :

इस लेख ने हमें C++ प्रोग्रामिंग भाषा में प्रयुक्त होने वाली टाइप कास्टिंग विधि सिखाई। कास्टिंग के प्रकार पर भी विस्तार से चर्चा की गई, और हमने इस बात पर ध्यान केंद्रित किया कि हम C++ प्रोग्रामिंग में ऐसे तरीकों का उपयोग क्यों करते हैं। हमने असिस्ट फ़ंक्शन पर चर्चा की जो सूचना प्राप्त करके और आरटीटीआई नामक सही रूपांतरण के लिए सत्यापन करके चर के डेटा प्रकार के रूपांतरण में मदद करता है। हमने Ubuntu 20.04 वातावरण में C++ प्रोग्रामिंग लैंग्वेज में एक एक्सप्रेशन में डायनामिक कास्ट ऑपरेटर का उपयोग करके डायनामिक कास्टिंग की अवधारणा को भी लागू किया।