निम्नलिखित तालिका वर्चुअल और प्योर वर्चुअल फंक्शन के बीच अंतर दिखाती है:
| वर्चुअल फंक्शन | प्योर वर्चुअल फंक्शन |
|---|---|
| वर्चुअल फंक्शन की क्लास में उनकी परिभाषा होती है। | प्योर वर्चुअल फंक्शन की कोई परिभाषा नहीं होती। |
| डिक्लेरेशन: virtual funct_name(parameter_list) {. . . . .}; | डिक्लेरेशन: virtual funct_name(parameter_list)=0; |
| इसमें डेराइव्ड क्लास की कोई अवधारणा नहीं है। | यदि किसी क्लास में कम से कम एक प्योर वर्चुअल फंक्शन है, तो इसे एब्स्ट्रैक्ट घोषित किया जाता है। |
| यदि आवश्यक हो, तो बेस क्लास वर्चुअल फंक्शन को ओवरराइड कर सकती है। | प्योर वर्चुअल फंक्शन के मामले में डेराइव्ड क्लास को निश्चित रूप से प्योर वर्चुअल फंक्शन को ओवरराइड करना होगा। |
वर्चुअल फंक्शन
उदाहरण कोड
#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;// B* टाइप का एक पॉइंटर जो d की ओर इशारा करता है b->s();// prints"D::s() called" return 0; }आउटपुट
In Derived
प्योर वर्चुअल फंक्शन
उदाहरण कोड
#include<iostream> using namespace std; class B { public: virtual void s() = 0; // प्योर वर्चुअल फंक्शन }; class D:public B { public: void s() { cout << " Virtual Function in Derived class\n"; } }; int main() { B *b; D dobj; // क्लास D का एक ऑब्जेक्ट b = &dobj;// B* टाइप का एक पॉइंटर जो dobj की ओर इशारा करता है b->s();// prints"D::s() called" }आउटपुट
Virtual Function in Derived class