8. Pointers, Virtual Functions & Polymorphism

8. Pointers, Virtual Functions & Polymorphism

 

8. Pointers, Virtual Functions & Polymorphism

 

बहुरूपता OOP की एक महत्वपूर्ण विशेषता है. यह बस एक नाम कई रूपों का मतलब है. हम पहले से ही देखा है कैसे बहुरूपता की अवधारणा अतिभारित ऑपरेटरों और कार्यों का उपयोग कर कार्यान्वित किया जाता है. बहुरूपता यानी संकलन समय और चलाते समय के दो प्रकार के होते हैं.
अतिभारित सदस्य कार्य मिलान तर्क द्वारा लागू करने के लिए चयन कर रहे हैं. दोनों प्रकार और संख्या. उसके संकलक संकलन समय पर इस जानकारी को जानता है और इसलिए संकलक संकलन ही समय पर एक विशेष कॉल के लिए उचित समारोह का चयन करने में सक्षम है. यह जल्दी बंधन या स्थिर बंधन या जोड़ने स्थिर कहा जाता है. इसके अलावा संकलन समय बहुरूपता के रूप में जाना जाता है, जल्दी बाध्यकारी बस का अर्थ है कि एक वस्तु अपने समय संकलन में समारोह कॉल करने के लिए बाध्य है.
यह चयन जबकि कार्यक्रम चल रहा है के द्वारा एक उपयुक्त सदस्य समारोह invoking चलाते समय बहुरूपता के रूप में जाना जाता है. यह एक आभासी समारोह के रूप में जाना जाता है तंत्र द्वारा प्राप्त किया जा सकता है. चलाते समय जब यह ज्ञात है क्या वर्ग ऑब्जेक्ट विचाराधीन हैं समारोह के उचित संस्करण लागू है. चूंकि समारोह संकलन के बाद बहुत बाद में एक विशेष वर्ग के साथ जुड़ा हुआ है. इस प्रक्रिया लेट बाइंडिंग के रूप में करार दिया है. यह भी गतिशील बंधन के रूप में में जाना जाता है क्योंकि वहाँ उचित समारोह के चयन गतिशील रूप से चलाने के लिए समय पर किया जाता है गतिशील हम वस्तुओं और आभासी कार्यों के लिए संकेत का उपयोग किया है बाध्यकारी प्राप्त करने के.
वस्तुओं के लिए सूचक: -
सूचक वर्ग के सदस्यों का उपयोग करने के लिए इस्तेमाल किया जा सकता है. सूचक एक वर्ग के द्वारा बनाई गई वस्तु को इंगित कर सकते हैं
आइटम x;
यहाँ आइटम एक वर्ग है और x कोई ऑब्जेक्ट प्रकार के आइटम के परिभाषित किया जा है. इसी तरह हम के रूप में प्रकार के आइटम के सूचक it_ptr परिभाषित कर सकते हैं: -

आइटम * it_ptr;
ऑब्जेक्ट सूचक चलाते समय वस्तुओं हम भी एक वस्तु सूचक का उपयोग करने के लिए एक वस्तु के सार्वजनिक सदस्यों का उपयोग कर सकते हैं बनाने में उपयोगी होते हैं.
घोषणा के रूप में इस प्रकार किया जा सकता है: -
आइटम x;
आइटम * ptr = &x;
वहाँ सूचक ptr x.we के पते के साथ initialized है तीर ऑपरेटर और वस्तु सूचक बयान का उपयोग करके डॉट ऑपरेटर और ऑब्जेक्ट और एक अन्य का उपयोग करके दो तरीकों में से एक में आइटम के सदस्य समारोह के लिए उल्लेख कर सकते हैं
         
x.getdata (100,30)
         
(x.show);
के बराबर हैं
ptr> getdata (100,30)
ptr-> (शो);
के बाद से * ptr एक्स के एक उपनाम है, हम भी निम्न विधि का उपयोग कर सकते हैं
(Ptr *) (शो);
कोष्ठकों आवश्यक हैं क्योंकि डॉट ऑपरेटर अविवेक ऑपरेटर की तुलना में अधिक पूर्वता है *.
हम भी संकेत के रूप में और नए ऑपरेटर का उपयोग कर वस्तुओं का निर्माण कर सकते हैं: -
आइटम * pter = नए आइटम;
इस बयान वस्तु संरचना में डेटा के सदस्यों के लिए पर्याप्त स्मृति आवंटित और ptr करने के लिए स्मृति अंतरिक्ष के पते प्रदान करती है.
हम सूचक का उपयोग की वस्तुओं की एक सरणी बना सकते हैं
जैसे
आइटम * pter = नए आइटम [10];
ऊपर बयान के समय की 10 वस्तुओं की एक सरणी के लिए एक स्मृति अंतरिक्ष बनाता है.