सी ++ में वर्चुअल फ़ंक्शंस बेस क्लास पॉइंटर्स की सूची बनाने के लिए उपयोग करते हैं और किसी भी व्युत्पन्न वर्ग के कॉल विधियों को व्युत्पन्न क्लास ऑब्जेक्ट के प्रकार को जाने बिना भी उपयोग करते हैं। वर्चुअल फ़ंक्शंस को रनटाइम पर देर से हल किया जाता है।
यदि आधार वर्ग में एक वर्चुअल फ़ंक्शन को एक बार सदस्य फ़ंक्शन के रूप में घोषित किया जाता है, तो यह उस बेस क्लास से प्राप्त प्रत्येक वर्ग में वर्चुअल हो जाता है। इसलिए, वर्चुअल बेस क्लास फ़ंक्शन के पुनर्परिभाषित संस्करणों की घोषणा करते समय व्युत्पन्न वर्ग में वर्चुअल कीवर्ड का उपयोग आवश्यक नहीं है।
उदाहरण कोड
#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