Virtual Functions & Dynamic Binding

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 BindingDynamic Binding
Decision TimeCompile timeRun time
Function CallFixedFlexible
Keywordvirtual नहींvirtual उपयोग होता है
UseSimple casesPolymorphism

Virtual Function के नियम

  • Base class में virtual keyword का उपयोग किया जाता है
  • 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 बनता है।

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top