Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
📘 Lesson  ·  Lesson 71

Virtual Functions

त्वरित सार

Virtual function base pointer के ज़रिए call को run time पर derived version चलाने देता है। यह पृष्ठ एक संक्षिप्त syntax reference है; यह आंतरिक रूप से कैसे काम करता है (vtable), virtual destructors, और पूरे concept के लिए, मुख्य virtual functions lesson और polymorphism देखें।

बुनियादी syntax

C++
class Base {
public:
    virtual void draw();      // base me 'virtual'
};
class Derived : public Base {
public:
    void draw() override;     // derived me 'override'
};

Base-pointer उदाहरण

C++
#include <iostream>
using namespace std;
class Animal { public: virtual void speak() { cout << "...\n"; } };
class Dog : public Animal { public: void speak() override { cout << "Woof\n"; } };
class Cat : public Animal { public: void speak() override { cout << "Meow\n"; } };

int main() {
    Animal *arr[2] = { new Dog(), new Cat() };
    for (Animal *a : arr) a->speak();   // run-time dispatch
}
Output:
Woof
Meow

virtual के साथ बनाम बिना

virtual के साथvirtual के बिना
basePtr->f() चलाता हैDerived का versionBase का version
DispatchRun time (dynamic)Compile time (static)

Pure virtual syntax

किसी function को pure virtual बनाने को = 0 जोड़ें — कोई body नहीं, और derived classes को इसे implement करना होगा। यह base को abstract class बनाता है:

C++
class Shape {
public:
    virtual double area() = 0;   // pure virtual
};

पूरी कहानी के लिए abstract classes देखें।

Keyword cheat sheet

Keywordकहाँअर्थ
virtualBase functionOverride हो सकता; dynamic dispatch सक्षम
overrideDerived functionसत्यापित करता कि यह base virtual override करता है
= 0Base functionPure virtual; class abstract बनती है
finalFunction/classआगे override/derivation रोकता है

आम गलतियाँ

  • = 0 लिखना पर बिना इरादे function को body भी देना।
  • Pointer/reference के बजाय object पर call करते समय dispatch की उम्मीद।
  • बेमेल signature चुपचाप override के बजाय hiding करना (override इस्तेमाल करें)।
  • Base में virtual destructor भूलना (मुख्य lesson में शामिल)।
🏋️ अभ्यास

एक base Employee लिखें जिसमें virtual salary() हो, और derived Manager तथा Intern। Pointers एक array में रखें और हर salary base pointer के ज़रिए print करें।

सारांश

  • virtual base function पर जाता है; override derived पर।
  • Run-time dispatch के लिए base pointer/reference के ज़रिए call करें।
  • = 0 pure virtual और abstract class बनाता है।
  • Keyword cheat sheet: virtual, override, =0, final।
  • Internals और design के लिए, मुख्य virtual functions lesson देखें।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

C++ में virtual function का syntax क्या है?
आप base class में return type से पहले virtual लिखकर virtual function घोषित करते हैं, जैसे virtual void draw();। Derived class में आप इसे फिर से परिभाषित करते हैं और override जोड़ते हैं, जैसे void draw() override;, ताकि compiler override जाँचे।
C++ में pure virtual function क्या है?
Pure virtual function का base class में कोई body नहीं होता और = 0 assign करके घोषित होता है, जैसे virtual void draw() = 0;। यह derived classes को अपना implementation देने पर मजबूर करता है और base class को abstract class बनाता है जिसका instance नहीं बन सकता।
क्या C++ में overriding function पर virtual लिखते हैं?
आपको derived class में virtual दोहराने की ज़रूरत नहीं; एक बार function base में virtual हो, उसके overrides भी अपने आप virtual हो जाते हैं। इसके बजाय override जोड़ना अच्छा अभ्यास है, जो इरादा दस्तावेज़ करता है और compiler को signature बेमेल पकड़ने देता है।
C++ में virtual function कैसे call करते हैं?
आप इसे किसी भी member function की तरह call करते हैं, पर polymorphic व्यवहार के लिए इसे base-class pointer या reference के ज़रिए invoke करते हैं, जैसे basePtr->draw();। फिर वास्तविक object से मेल खाता version run time पर चुना जाता है।
C++ में virtual और override में क्या अंतर है?
Base class में virtual किसी function को overridable चिह्नित करता है और run-time dispatch सक्षम करता है। Derived class में override बताता है कि function किसी base virtual को override करने को है, compiler को signature सत्यापित करने और मेल न खाने पर error रिपोर्ट करने देते हुए।
← Back to C++ Tutorial
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicPure Virtual & Abstract Class आपकी प्रगति: 71 / 81 (88%) · Lesson 72 / 81 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें