कोड ब्रूस एकलेल से, सी ++ में सोच रहा है इस कोड के लिए वह कहता है, फ़ंक्शन C :: f () B: f () redefines, जो इसे संभालते हैं, और भी बेस-क्लास संस्करण कॉल करता है इसके अलावा, यह a.f () कॉल करता है ध्यान दें कि फ्यूचर के पुनर्परिवर्तन के बारे में आप केवल समय के बारे में बात कर सकते हैं; एक सदस्य वस्तु के साथ आप केवल ऑब्जेक्ट के सार्वजनिक इंटरफ़ेस को हेरफेर कर सकते हैं, इसे फिर से परिभाषित नहीं कर सकते। उसका क्या अर्थ है? फ़ंक्शन तो, जहां फ़ंक्शन का कोड redefinition है क्योंकि वर्ग ध्यान दें कि कक्षा
वर्ग एक {int i; सार्वजनिक: ए (इंट ii): i (ii) {} ~ ए () {} void f () const {}}; वर्ग बी {int i; सार्वजनिक: बी (इंट ii): i (ii) {} ~ बी () {शून्य एफ () कॉन्स्ट {}}; वर्ग सी: सार्वजनिक बी {ए ए; सार्वजनिक: सी (इंट II): बी (ii), ए (ii) {} ~ सी () {} // कॉल ~ ए () और ~ बी () शून्य एफ () कॉन्स्ट {// रेडिफ़िनिशन a.f (); बी :: च (); }}; इंट मुख्य () {सी सी (47); }
C :: f () केवल स्कोप रेज़ोल्यूशन ऑपरेटर के माध्यम से
f () का
B कॉल कर रहा है। ऐसा इसलिए है क्योंकि यह विरासत में मिला है और एक नाम के साथ एक समारोह भी
C में मौजूद है।
ए का फ़ंक्शन
f () वर्ग
C में निर्धारित वस्तु के माध्यम से कहा जाता है।
f () जैसा कि एक्सेल कहता है?
C से
B से प्राप्त होता है, फ़ंक्शन
C :: f < / कोड> फ़ोरम को ओवरराइड करता है
B :: f () अपने स्वयं के संस्करण को परिभाषित करके यदि आप किसी वस्तु का घोषित घोषित करते हैं तो
C और उसका
f () फ़ंक्शन कॉल करें, यह निष्पादित करेगा
C :: f () जो पूरी तरह से हो सकता है
B :: f () से स्वतंत्र। इसलिए बेस-क्लास फ़ंक्शन को पुनर्परिभाषित किया गया है।
सी में एक प्रकार का सदस्य भी होता है
ए , जिसमें भी फ़ंक्शन होता है
एफ () , और वह
सी का कार्यान्वयन
f () कॉल करने के लिए होता है
af () । इसलिए
C एक अलग इंटरफ़ेस के साथ अपना स्वयं का
f () प्रदान कर सकता है, लेकिन यह परिवर्तन
A नहीं कर सकता का कार्यान्वयन।
No comments:
Post a Comment