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
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.