c++ - Difference between virtual and non virtual function for child class -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 2 जवाब

मेरी अभिभावक वर्ग होना;

<पूर्व> वर्ग अभिभावक {आभासी शून्य प्रिंट () (cout & lt; & lt; "अभिभावक"; }}

मामला 1:

  क्लास बच्चे: सार्वजनिक अभिभावक {आभासी शून्य प्रिंट x () {cout & lt; & lt; "बच्चे"; }}  

प्रकरण 2:

  क्लास बच्चे: सार्वजनिक अभिभावक {void printx () {cout & lt; & lt; "बच्चे"; }}  

क्या फ़ंक्शन के लिए printx child में वर्चुअल को छोड़ देना कोई भी असर है? मामले में 2?

परन्तु फ़ंक्शन हस्ताक्षर समान हैं, child क्लास को वर्चुअल को विधि में जोड़ने की आवश्यकता नहीं है, संकलक आपके लिए इसका ध्यान रखेगा यदि फ़ंक्शन को अभिभावकीय वर्ग में वर्चुअल घोषित किया जाता है, तो बच्चे की अधित्यागित विधियां भी वर्चुअल हैं।

यदि सी ++ 11 उपलब्ध है, तो ओवरराइड विधि को जोड़ने पर विचार करें बच्चे का वर्ग;

<पूर्व> वर्ग का बच्चा: सार्वजनिक अभिभावक {शून्य प्रिंट x (ओवरलैड) {cout & lt; & lt; "बच्चे"; }}

ओवरराइड के साथ, संकलक यह सुनिश्चित करने के लिए जांच करेगा कि यह विधि वास्तव में आधार वर्ग में एक आभासी विधि को ओवरराइड करती है। यदि ऐसा नहीं है, तो कंपाइलर आपके लिए एक त्रुटि उत्पन्न करेगा। उदाहरण के लिए; मूल पोस्टिंग के रूप में, यह printx और pritnx

के बीच वर्तनी अंतर को उठाएगा।

Comments

Popular posts from this blog

mysql - How to enter php data into a html multiple select box -

java - Can't add JTree to JPanel of a JInternalFrame -

c++ - Cassandra datastax cpp driver - avoiding unnecessary copies -