C++ Hierarchical Inheritance


When several classes are derived from common base class it is called hierarchical inheritance.

In C++ hierarchical inheritance, the feature of the base class is inherited onto more than one sub-class.

For example, a car is a common class from which Audi, Ferrari, Maruti etc can be derived.

Following block diagram highlights its concept.

C++ Hierarchical Inheritance Block Diagram

c++ hierarchical inheritance block diagram

As shown in above block diagram, in C++ hierarchical inheritance all the derived classes have common base class. The base class includes all the features that are common to derived classes.

As in other inheritance, based on the visibility mode used or access specifier used while deriving, the properties of the base class are derived. Access specifier can be private, protected or public.

Click here to learn in detail about access specifiers and their use in inheritance

C++ Hierarchical Inheritance Syntax

class A // base class
{
    ..............
};
class B : access_specifier A // derived class from A
{
    ...........
 } ;
 class C : access_specifier A // derived class from A
 {
    ...........
 } ;
 class D : access_specifier A // derived class from A
 {
     ...........
 } ;

C++ Hierarchical Inheritance Example

// hierarchial inheritance.cpp
#include <iostream> 
using namespace std;

class A //single base class
{
    public:
 	int x, y;
 	void getdata()
 	{
   	    cout << "\nEnter value of x and y:\n"; cin >> x >> y;
 	}
};
class B : public A //B is derived from class base
{
    public:
 	void product()
 	{
 	    cout << "\nProduct= " << x * y;
 	}
};
class C : public A //C is also derived from class base
{
    public:
 	void sum()
 	{
        cout << "\nSum= " << x + y;
 	}
};
int main()
{
    B obj1;          //object of derived class B
    C obj2;          //object of derived class C
    obj1.getdata();
    obj1.product();
    obj2.getdata();
    obj2.sum();
    return 0;
}  //end of program


Output

Enter value of x and y:
2
3
Product= 6
Enter value of x and y:
2
3
Sum= 5

Explanation
In this example, there is only one base class A from which two class B and C are derived.

Both derived class have their own members as well as base class members.

The product is calculated in the derived class B, whereas, the sum is calculated in the derived class C but both use the values of x and y from the base class.