सी ++ में वर्चुअल फ़ंक्शंस बेस क्लास पॉइंटर्स की सूची बनाने के लिए उपयोग करते हैं और किसी भी व्युत्पन्न वर्ग के कॉल विधियों को बिना किसी प्रकार के व्युत्पन्न वर्ग ऑब्जेक्ट को जानने के लिए उपयोग करते हैं। वर्चुअल फ़ंक्शंस को रनटाइम पर देर से हल किया जाता है।
वर्चुअल फ़ंक्शन का मुख्य उपयोग रनटाइम बहुरूपता प्राप्त करना है। रनटाइम बहुरूपता केवल बेस क्लास प्रकार के पॉइंटर (या संदर्भ) के माध्यम से प्राप्त की जा सकती है। साथ ही, बेस क्लास पॉइंटर बेस क्लास की वस्तुओं के साथ-साथ व्युत्पन्न वर्ग की वस्तुओं को भी इंगित कर सकता है। उपरोक्त कोड में, बेस क्लास पॉइंटर 'बी' में व्युत्पन्न वर्ग के ऑब्जेक्ट 'डी' का पता होता है।
उदाहरण कोड
#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; // An object of class D B *b= &d; // A pointer of type B* pointing to d b->s(); // prints "D::s() called" return 0; }
आउटपुट
In Derived