In this C++ tutorial, you will learn what Multiple Inheritance is, how to define a child class that inherits from multiple classes, with examples.

C++ Multiple Inheritance

In C++, Multiple Inheritance is a scenario where a class inherits more than one class.

We will also discuss a scenario where there could be a situation when more than one base classes has a function with the same name.

Examples

ADVERTISEMENT

1. Class B inherits both Class A and Class X

The following is a simple example where A and X are base classes and class B inherits both A and X.

C++ Program

class A {
public:
    void funA() {}
};

class X {
public:
    void funX() {}
};

class B: public A, public X {
public:
    void funB() {
        funA();
        funX();
    }
};

Now, let us define some properties and functions in these classes and see how we can create an object of class B, and access the properties and functions of classes A and X.

C++ Program

#include <iostream>
using namespace std;

class A {
public:
    int a = 3;
    void funA() {
        cout << "Running function in Class A." << endl;
    }
};

class X {
public:
    int x = 9;
    void funX() {
        cout << "Running function in Class X." << endl;
    }
};

class B: public A, public X {
public:
    void funB() {
        cout << "Running function in Class B." << endl;
    }
};

int main() {
    B bObj = B();
    bObj.funB();
    bObj.funA();
    bObj.funX();
    cout << "Property of A : a = " << bObj.a << endl;
    cout << "Property of X : x = " << bObj.x << endl;
}

Output

Running function in Class B.
Running function in Class A.
Running function in Class X.
Property of A : a = 3
Property of X : x = 9
Program ended with exit code: 0

2. Parent Classes with a function of same name

In the following program, A and X are base classes and these classes have a method with the name fun().

Since B inherits both these classes A and X, if we try to access the function fun() from class B, or via B instance objects, the program does not compile.

We must specify the base class while calling the function as A::fun() or X::fun().

C++ Program

#include <iostream>
using namespace std;

class A {
public:
    void fun() {
        cout << "Running function in Class A." << endl;
    }
};

class X {
public:
    void fun() {
        cout << "Running function in Class X." << endl;
    }
};

class B: public A, public X {
};

int main() {
    B bObj = B();
    bObj.A::fun();
    bObj.X::fun();
}

Output

Running function in Class A.
Running function in Class X.
Program ended with exit code: 0

Note

Also, note that there would no issue if there is also a function with the same name in derived class. A call with this function name, without any mention to which class, the function in derived class would be executed.

C++ Program

#include <iostream>
using namespace std;

class A {
public:
    void fun() {
        cout << "Running function in Class A." << endl;
    }
};

class X {
public:
    void fun() {
        cout << "Running function in Class X." << endl;
    }
};

class B: public A, public X {
public:
    void fun() {
        cout << "Running function in Class B." << endl;
    }
};

int main() {
    B bObj = B();
    bObj.fun();
}

Output

Running function in Class B.
Program ended with exit code: 0

Conclusion

In this C++ Tutorial, we learned what Inheritance is, how to use inheritance in C++, with the help of examples.