में गैर वर्चुअल घोषित किया है यदि किसी वर्ग को व्युत्पन्न कक्षा में गैर वर्चुअल घोषित किया जाता है, जब बेस क्लास फ़ंक्शन वायर्यूटल होता है, तो यह फ़ंक्शन को अपने पॉइंटर पर कॉल करने पर एक vtable लुकअप का आह्वान क्यों करता है? कार्य दायरे से स्पष्ट है।वर्चुअल फ़ंक्शन ने व्युत्पन्न कक्षा
उत्तर
सी ++ में यदि आप बेस क्लास में virtual
विधि घोषित करते हैं तो यह वर्चुअल क्लास में वर्चुअल भी है, भले ही virtual
कीवर्ड छोड़ा गया हो।
दस्तावेज़ीकरण उद्देश्यों के लिए हालांकि मेरी राय में वैसे भी इसे दोहराना अच्छा लगता है।
जब किसी वर्ग को वर्चुअल फ़ंक्शन प्राप्त होता है, तो उस फ़ंक्शन की कोई भी नई ओवरराइडिंग घोषणा स्वचालित रूप से आभासी हो जाएगी, भले ही virtual
कीवर्ड का उपयोग न किया जाए।
फ़ंक्शन अभी भी वर्चुअल है (मान लीजिए कि यह वही है या एक कॉन्वर्सेंट हस्ताक्षर है)। virtual
का उपयोग करते समय ओवरराइडिंग अनावश्यक है।
आप फ़ंक्शन को गैर वर्चुअल नहीं बना सकते हैं, इसलिए यह वर्चुअल रहेगा और फ़ंक्शन पर कॉल सामान्य रूप से वर्चुअल भी होगा। बेशक, ऐसी स्थितियां हैं जहां संकलक इसे अनुकूलित करने और प्रत्यक्ष कॉल करने में सक्षम होंगे, लेकिन आपके परिदृश्य में गारंटी नहीं है।
व्युत्पन्न वर्ग पर प्रभाव डालने के लिए बनाई गई वर्चुअल विधियां (जब आप वर्चुअल के रूप में विधि को चिह्नित करते हैं। यह व्युत्पन्न कक्षाओं पर vtable का उपयोग करेगा)। और ओवरराइड विधियां आभासी होंगी।
- 1. वर्चुअल फ़ंक्शन
- 2. सी ++: व्युत्पन्न वर्ग के वर्चुअल फ़ंक्शन को कॉल करना
- 3. व्युत्पन्न कक्षा
- 4. वर्चुअल फ़ंक्शन कॉन्स बनाम वर्चुअल फ़ंक्शन गैर-कॉन्स
- 5. ओवरलोडेड फ़ंक्शंस व्युत्पन्न कक्षा
- 6. सी ++ share_ptr व्युत्पन्न कक्षा
- 7. सार्वजनिक वर्चुअल फ़ंक्शन C++
- 8. व्युत्पन्न मॉडल संबंधित कक्षा
- 9. सी # व्युत्पन्न कक्षा
- 10. टेम्पलेटेड वर्चुअल फ़ंक्शन
- 11. व्युत्पन्न वर्ग
- 12. क्या कक्षा में वर्चुअल डेटा सदस्य हो सकते हैं?
- 13. फ़ंक्शन का व्युत्पन्न
- 14. वर्चुअल फ़ंक्शन कॉलिंग डेरेंसेंस ऑब्जेक्ट
- 15. यह पता लगाने के तरीके कि व्युत्पन्न कक्षा
- 16. बेस क्लास को व्युत्पन्न कक्षा
- 17. सी ++ वर्चुअल फ़ंक्शन कार्यान्वयन?
- 18. वर्चुअल फ़ंक्शन vptr
- 19. पायथन ने क्लास और बेस क्लास विशेषताओं को व्युत्पन्न किया?
- 20. व्युत्पन्न प्रकार
- 21. सी ++ में स्थित शुद्ध वर्चुअल फ़ंक्शन कहां है?
- 22. डायमंड विरासत और शुद्ध वर्चुअल फ़ंक्शन
- 23. शुद्ध वर्चुअल विधियों के साथ क्लोनिंग सी ++ कक्षा
- 24. वर्चुअल विधि
- 25. व्युत्पन्न वर्ग वर्चुअल फ़ंक्शन को ओवरराइड नहीं करते समय Vptr क्यों आवश्यक है?
- 26. क्या बेस क्लास निर्धारित कर सकता है कि व्युत्पन्न वर्ग ने वर्चुअल सदस्य को ओवरराइड किया है या नहीं?
- 27. क्या वर्चुअल फ़ंक्शन बेस क्लास में एक ही नाम के गैर-वर्चुअल फ़ंक्शन को ओवरराइड करता है?
- 28. वर्चुअल तरीके या फ़ंक्शन पॉइंटर्स
- 29. संदर्भ चर और वर्चुअल फ़ंक्शन
- 30. वर्चुअल फ़ंक्शन डिफ़ॉल्ट तर्क व्यवहार
यह कंपाइलर के लिए अनावश्यक हो सकता है लेकिन यह वर्ग का उपयोग कर किसी भी मानव के लिए अच्छा प्रलेखन है। –
@ लोकी एस्टारी: सही। – PlasmaHH