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