<पूर्व>
#include & lt; iostream & gt; नेमस्पेस एसटीडी का उपयोग करना; नामस्थान Q20 {// बेस क्लास कक्षा बेस {// पोस्टिंग त्रुटियों को हटाने के लिए कुछ संदर्भ जोड़ें एलओएल सार्वजनिक: बेस (बेस * बी = नल) {m_b = b; } बेस * एम_ बी; वर्चुअल व्हॉइड फ़्ंंक () {cout & lt; & lt; एंडएल & lt; & lt; "बी"; अगर (एम_ बी) {m_b- & gt; फैंसी (); } और {m_b = (बेस *) 1; } वापसी; }}; // 1 वर्ग कक्षा डी 1 प्राप्त की गई: सार्वजनिक बेस {// त्रुटियों को पोस्ट करने वाले लोगों को हटाने के लिए कुछ संदर्भ जोड़ें: डी 1 (बेस * बी = नल) {m_b = b; } शून्य फ़ंक्शन (बेस * बी) {cout & lt; & lt; एंडएल & lt; & lt; "डी 1"; m_b- & gt; समारोह (); }}; // व्युत्पन्न 2 कक्षा वर्ग D2: सार्वजनिक बेस {// कुछ संदर्भों को सार्वजनिक करने के लिए पदों को हटाने के लिए कुछ संदर्भ जोड़ें: डी 2 (बेस * बी = नल) {m_b = b; } शून्य func () {cout & lt; & lt; एंडएल & lt; & lt; "डी 2"; m_b- & gt; समारोह (); }}; // व्युत्पन्न 3 कक्षा वर्ग डी 3: सार्वजनिक बेस {// कुछ संदर्भों को हटाने के लिए सार्वजनिक पदों को हटाने के लिए कुछ संदर्भ जोड़ें: डी 3 (बेस * बी = नल) {m_b = b; } शून्य func () {cout & lt; & lt; एंडएल & lt; & lt; "डी 3"; m_b- & gt; समारोह (); }}; शून्य Q20 () {बेस * obj = new D2 (नया डी 1 (नया डी 3 (नया बेस))); // उपरोक्त भ्रामक हिस्सा है, ऊपर से होने वाली कोई भी टुकड़ा है और क्या / नीचे कॉल अनुक्रम होने वाला है ... obj- & gt; func (); Cout & lt; & lt; endl; वापसी; }}; // प्रश्न पोस्ट करना कठिन है int main () {Q20 :: Q20 (); वापसी 0; }
नीचे कॉल अनुक्रम होने वाला है ... < / P>
इसे देखें:
बेस * obj = new D2 (...); obj- & gt; समारोह (); खैर, डी 2 अतिभारित आभासी फंक () से आधार , इसलिए, इसे पहले कहा जाएगा <<> कोड > > वर्चुअल फंक () फ़ंक्शन में डी 1 , इसलिए, बेस :: फ़्ंंक () को कॉल किया जाएगा और B प्रिंट किया जाएगा । डी 1 (नया डी 3 (...)) डी 3 ने ओवरलोड किया फ़ंक्शन है, इसलिए, D3 :: func () को कॉल किया जाएगा और डी 3 प्रिंट किया जाएगा। डी 3 (नया बेस) अंत में, बी प्रिंट किया जाएगा। इसलिए, पूर्ण आउटपुट: डी 2 बी डी 3 बी
No comments:
Post a Comment