Multiple inheritance

Multiple inheritance is a feature in C++ where a class (derived class) can inherit from more than one base class. This allows the derived class to combine functionalities from multiple sources.

Syntax

class Base1 {
    // Base1 class members
};

class Base2 {
    // Base2 class members
};

class Derived : public Base1, public Base2 {
    // Derived class members
};

Example

#include <iostream>
using namespace std;

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

class Mammal {
public:
    void walk() {
        cout << "Walking..." << endl;
    }
};

class Dog : public Animal, public Mammal {
public:
    void bark() {
        cout << "Barking..." << endl;
    }
};

int main() {
    Dog myDog;
    myDog.eat();   // Inherited from Animal
    myDog.walk();  // Inherited from Mammal
    myDog.bark();  // Specific to Dog
    return 0;
}

Key Points

  1. Combining Functionality: Multiple inheritance allows a derived class to inherit features from multiple base classes.
  2. Flexibility: This approach provides flexibility in designing classes by combining functionalities.
  3. Ambiguity: It can lead to ambiguity if the same method is inherited from multiple base classes.

Resolving Ambiguity

To resolve ambiguity, C++ allows the use of the scope resolution operator.

class Base1 {
public:
    void show() {
        cout << "Base1 show" << endl;
    }
};

class Base2 {
public:
    void show() {
        cout << "Base2 show" << endl;
    }
};

class Derived : public Base1, public Base2 {
public:
    void display() {
        Base1::show(); // Specify which base class method to call
        Base2::show();
    }
};

int main() {
    Derived obj;
    obj.display();
    return 0;
}