C++ में वर्चुअल फ़ंक्शन्स का उपयोग बेस क्लास पॉइंटर्स की एक सूची बनाने और किसी भी डेराइव्ड क्लास के मेथड्स को कॉल करने के लिए किया जाता है, बिना यह जाने कि डेराइव्ड क्लास ऑब्जेक्ट किस प्रकार का है। वर्चुअल फ़ंक्शन्स रनटाइम पर देर से हल होते हैं।
वर्चुअल फ़ंक्शन का मुख्य उपयोग रनटाइम पॉलीमॉर्फिज्म प्राप्त करना है। रनटाइम पॉलीमॉर्फिज्म केवल बेस क्लास टाइप के पॉइंटर (या रेफरेंस) के माध्यम से प्राप्त किया जा सकता है। साथ ही, एक बेस क्लास पॉइंटर बेस क्लास के ऑब्जेक्ट्स के साथ-साथ डेराइव्ड क्लास के ऑब्जेक्ट्स को भी इंगित कर सकता है। उपरोक्त कोड में, बेस क्लास पॉइंटर 'b' में डेराइव्ड क्लास के ऑब्जेक्ट 'd' का पता होता है।
उदाहरण कोड
#include<iostream> using namespace std; class B { public: virtual void s() { cout<<" In Base \n"; } }; class D: public B { public: void s() { cout<<"In Derived \n"; } }; int main(void) { D d; // क्लास D का एक ऑब्जेक्ट B *b= &d; // d को इंगित करने वाला B* टाइप का पॉइंटर b->s(); // प्रिंट करता है "D::s() called" return 0; }
आउटपुट
In Derived