5. C++ OOP: Inheritance, Polymorphism & Virtual Functions

Comprehensive Guide: Derived classes, single/multiple inheritance, method overriding, virtual functions & abstract interfaces

Module 1: C++ Inheritance (Single & Multiple)

Reusing code properties from parent base classes to child derived classes.

🇬🇧 English Definition

Inheritance is the mechanism by which a child derived class inherits fields and methods from a parent base class.

🇮🇳 Hinglish Definition

Inheritance se child class parent class ke saare properties aur methods ko aage use kar sakti hai bina code repeat kiye.

Core Concepts & Rules

  • Syntax: class DerivedClass : public BaseClass { ... }
  • Multiple Inheritance: class Child : public Parent1, public Parent2 { ... }

🔍 Line-by-Line Code Breakdown

  1. Line 1-5: Define Base class Animal with eat() method.
  2. Line 7-11: Define Derived class Dog inheriting public Animal with bark() method.
  3. Line 14-16: Dog object d1 calls both eat() and bark().
💻 Practical C++ Code Example - C++ Inheritance (Single & Multiple)
using namespace std;

class Animal {
public:
    void eat() { cout << "Animal is eating..." << endl; }
};

class Dog : public Animal {
public:
    void bark() { cout << "Dog is barking!" << endl; }
};

int main() {
    Dog d1;
    d1.eat();  // Inherited method
    d1.bark(); // Child method
    return 0;
}
📤 Compiled C++ Output:
Animal is eating... Dog is barking!

Module 2: Virtual Functions & Runtime Polymorphism

Late binding function calls using base class pointers.

🇬🇧 English Definition

A Virtual Function is a member function in a base class declared with the 'virtual' keyword, overridden in derived classes, resolving calls dynamically at runtime.

🇮🇳 Hinglish Definition

Virtual Function se runtime par decide hota hai ki base class pointer hone par bhi child class ka method run hoga (Runtime Polymorphism).

Core Concepts & Rules

  • Declare with virtual keyword in Base class: virtual void makeSound()
  • Override keyword in Derived class: void makeSound() override
  • Pure Virtual Function: virtual void draw() = 0; creates an Abstract Class.

🔍 Line-by-Line Code Breakdown

  1. Line 3: Base Shape class with virtual void draw().
  2. Line 8: Derived Circle class overriding draw().
  3. Line 13-14: Shape pointer ptr = new Circle(); ptr->draw() calls Circle::draw() due to virtual dynamic binding!
💻 Practical C++ Code Example - Virtual Functions & Runtime Polymorphism
using namespace std;

class Shape {
public:
    virtual void draw() { cout << "Drawing generic shape" << endl; }
};

class Circle : public Shape {
public:
    void draw() override { cout << "Drawing Circle by Instructor!" << endl; }
};

int main() {
    Shape *ptr = new Circle();
    ptr->draw(); // Calls Circle::draw()
    delete ptr;
    return 0;
}
📤 Compiled C++ Output:
Drawing Circle by Instructor!