Introduction
Object Oriented Programming में inheritance और polymorphism का उपयोग करते समय यह आवश्यक हो जाता है कि सही function सही object के अनुसार call हो। कई बार base class pointer या reference के माध्यम से derived class के object को access किया जाता है। ऐसे में यह तय करना महत्वपूर्ण होता है कि कौन सा function execute होगा।
C++ में इस समस्या को हल करने के लिए Virtual Functions और Dynamic Binding का उपयोग किया जाता है। ये concepts run time पर function call को resolve करते हैं और program को अधिक flexible बनाते हैं।
Definition
Virtual Function
Virtual function वह member function होता है जिसे base class में virtual keyword के साथ declare किया जाता है और जिसे derived class में override किया जा सकता है।
Dynamic Binding
Dynamic Binding वह प्रक्रिया है जिसमें function call का निर्णय run time पर होता है, न कि compile time पर।
Virtual Function का Syntax
class Base {
public:
virtual void show() {
// base class function
}
};
Example (Virtual Function)
#include <iostream>
using namespace std;class Base {
public:
virtual void show() {
cout << "Base Class Function" << endl;
}
};
class Derived : public Base {
public:
void show() {
cout << "Derived Class Function" << endl;
}
};
int main() {
Base *ptr;
Derived d1;
ptr = &d1;
ptr->show(); // dynamic binding
return 0;
}
Output:
Derived Class Function
Working को समझना
ptrएक base class pointer है- यह derived class object को point कर रहा है
show()virtual है- इसलिए derived class का function call हुआ
- यह decision run time पर हुआ (dynamic binding)
Without Virtual Function
यदि virtual keyword न हो:
ptr->show();
तो output होगा:
Base Class Function
यह compile-time binding (static binding) कहलाता है।
Static vs Dynamic Binding
| आधार | Static Binding | Dynamic Binding |
|---|---|---|
| Decision Time | Compile time | Run time |
| Function Call | Fixed | Flexible |
| Keyword | virtual नहीं | virtual उपयोग होता है |
| Use | Simple cases | Polymorphism |
Virtual Function के नियम
- Base class में
virtualkeyword का उपयोग किया जाता है - Derived class में function override किया जाता है
- Pointer या reference का उपयोग आवश्यक होता है
- Function call run time पर resolve होता है
Virtual Function के लाभ
- Runtime polymorphism को support करता है
- Flexible और dynamic behavior देता है
- Code reuse और extensibility बढ़ाता है
निष्कर्ष
Virtual functions और dynamic binding C++ में polymorphism को implement करने के लिए महत्वपूर्ण concepts हैं। ये सुनिश्चित करते हैं कि सही function run time पर execute हो, जिससे program अधिक flexible और powerful बनता है।