Various types of inheritances: 1. single inheritance 2. Multiple Inheritance 3. Multilevel Inheritance 4. Hierarchical Inheritance 5. Hybrid Inheritance
Types of
Inheritance
•
Various types of inheritances are as
shown by following figures ‒

Fig. 3.4.1
•
In single inheritance there is one
parent per derived class. This is the most common form of inheritance.
The
simple program for such inheritance is ‒
C++ Program
#include <iostream>
using namespace std;
class Base
{
public:
int x;
void set_x(int n)
{
x = n;
}
void show_x()
{
cout<<"\n\t
Base class…";
cout
<<"\n\t x= "<<x;
}
};
class derived: public Base
{
int y
void set_y(int n)
{
y = n;
}
void show_xy()
{
cout<<"\n\n\t
Derived class ...";
cout<<"\n\t
x = "<<x;
cout
<<"\n\t y= "<<y;
}
};
int main()
{
derived obj;
int x, y;
cout<<"\n Enter the value of x";
cin>>x;
cout<<"\n Enter the value of y";
cin>>y;
obj.set_x(x);//inherits base class
obj.set_y(y); // access member of derived class
obj.show_x();//inherits base class
obj.show_xy(); // access member of derived class
return 0;
}
Output
Enter the value of x
10
Enter the value of y
20
Base class
x= 10
Derived class...
x = 10
y = 20
Example: 1
Define a
class to represent a string with operations string length, compare and reverse.
Show its use of base and derived classes.
Solution :
#include<iostream>
using namespace std;
class Base
{
public:
char str1[10],str2[10];
void getstr()
{
cout<<"\n
Enter String1:
cin>>str1;
cout<<"\n
Enter String2: ";
cin>> str2;
}
};
class Derived:public Base
{
public:
int getlength(char s[10])
{
for(int
i=0;s[i]!='\0';i++);
return i‒1;
}
void reverse()
{
int n=getlength(str1);
for(int i=n;i>=0;i‒
‒)
cout<<str1[i];
cout<<endl;
}
void compare()
{
int i,j,flag=0;
int n1=getlength(str1);
int n2=getlength(str2);
for(i=0,j=0;i<n1,j<n2;i++,j++)
{
if(str1[i]=str2[j])
flag=1;
}
if(flag= =1)
cout<<"\n
Two strings are not equal";
else
cout<<"\n
Two strings are equal";
}
};
int main()
{
Derived obj;
obj.getstr();
cout<<"\n Reversing first string: ";
obj.reverse();
obj.compare();
return 0;
}
Enter String1: hello
Enter String2: helló
Reversing first
string: olleh
Two strings are equal
2. Multiple Inheritance
•
In multiple inheritance the derived
class is derived from more than one base class.
•
The implementation of multiple inheritance
is as shown below ‒

C++ Programs
#include <iostream>
using namespace std;
class Operation
{
protected:
int x, y
public:
void set_values
(int a, int b)
{
x=a;
y=b;
}
};
class Coutput
{
public:
void display
(int i);
};
void Coutput::display (int i)
{
cout << i
<< endl;
}
//product class inherits two base classes ‒
//Operation and Coutput
class product: public Operation, public Coutput
{
public:
int function ()
{
return (x *
y);
}
};
//sum class inherits two base classes –
//Operation and Coutput
class sum: public Operation, public Coutput
{
public:
int function ()
{
return (x +
y);
}
};
int main()
{
product
obj_pr;//object of product class
sum
obj_sum;//object of sum class
obj_pr.set_values
(10,20);
obj_sum.set_values
(10,20);
cout<<"\n
The product of 10 and 20 is "<<endl;
obj_pr.output (obj_pr.function());
cout<<"\n
The sum of 10 and 20 is "<<endl;
obj_sum.output (obj_sum.function());
return 0;
}
Output
The product of 10 and
20 is
200
The sum of 10 and 20
is
30
In
above program there are two classes Operation and Coutput. The derived class
product is derived from both Operation and Coutput classes. Similarly the
derived class sum is derived from two classes: Operation and Coutput.
•
Then in main function obj_pr is an object created for class product and obj_sum
is an object created for class sum. Thus multiple inheritance is achieved.
When
a derived class is derived from a base class which itself is a derived class
then that type of inheritance is called multilevel inheritance.
For
example ‒ If class A is a base class and class B is another class which is
derived from A, similarly there is another class C being derived from class B
then such a derivation leads to multilevel inheritance.
The implementation of multilevel inheritance
is as given below –

#include<iostream>
using namespace std;
class A
{
protected:
int x;
public:
void get_a(int);
void put_a();
};
void A::get_a(int a)
{
x=a;
}
void A::put_a()
{
cout<<"\n
The value of x is "<<x;
}
class B:public A
{
protected:
int y
public:
void get_b(int);
void put_b();
};
void B::get_b(int b)
{
y=b;
}
void B::put_b()
{
cout<<"\n
The value of y is "<<y;
}
class C:public B
{
int z;
public:
void display();
};
void C::display()
{
z=y+10;
put_a(); //member of
class A
put_b(); //member of
class B
cout<<"\n
The value of z is "<<z;
}
int main()
{
C obj://object of class C
//accessing class A member via object of class C
obj.get_a(10);
//accessing class B member via object of class C
obj.get_b(20);
//accessing class C member via object of class C
obj.display();
cout<<endl;
return 0;
}
The value of x is 10
The value of y is 20
The value of z is 30
In
above program we have declared 3 classes namely A, B and C. In these classes
values to variables x, y and z are assigned.
• In class C, which is actually derived from a
derived class B (derived from A) a display() function is written. Note that the
members of class A and B are accessible in class C as it is a derived class.
z=y+10;
put_a();//member
of class A
put_b();//member
of class B
cout<<"\n
The value of z is "<<z;
Similarly
in main() function we have created an object of class C.
C
obj;
And
now using this obj we can access the member of any class.
Thus
the multilevel inheritance is achieved.
•
Hierarchical inheritance is a kind of inheritance in which one or more classes
are derived from the common base class. For example ‒
•
In this type of inheritance the subclass can inherit the properties of its
parent classes and at the same time it can add its new features. The subclass
can serve as a base class for the lower level classes.
The
C++ program demonstrating this type of inheritance is as shown below –

#include<iostream>
using namespace std;
class Passenger
{
int code;
char name[20];
public:
void getPassenger()
{
cout<<"\nEnter
the code and name ";
cin>>code>>name;
}
void ShowDetails()
{
cout<<"\nCode:
"<<code;
cout<<"\nName:
"<<name;
}
};
class Seats:public Passenger
{
int NoOfSeats;
public:
void getSeats()
{
cout<<"\nEnter
the Number of Seats";
cin>>NoOfSeats;
}
void
Display_Reservation()
{
cout<<"\nNumber
of Seats: "<<NoOfSeats;
}
};
class AC_Class:public Seats
{
double fare;
public:
void getFare()
{
cout<<"\nEnter
the fare";
cin>>fare;
void DisplayFare()
{
cout<<"\nType:
AC Class Reservation";
cout<<"\nFare
Amount: "<<fare;
}
};
class NonAC_Class:public Seats
{
public:
void DisplayClass()
{
cout<<"\nType:
Non AC Class Reservation";
}
};
using namespace std;
int main()
{
int i,m,n,choice;
AC_Class a[10];
NonAC_Class na[10];
cout<<"\nEnter
the number of AC Class Passengers ";
cin>>m;
for(i=0;i<m;i++)
{
cout<<"\nEnter
Details of Passenger "<<i+1;
a[i].getPassenger();
a[i].getSeats();
a[i].getFare();
return 0;
}
cout<<"\nEnter the number of Non‒AC Class Passengers
";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"\nEnter
the Details of Passenger "<<i+1;
na[i].getPassenger();
na[i].getSeats();
}
while(1)
{
cout<<"\n
Displaying Details";
cout<<"\n
1. AC Class \n 2. Non AC Class\n 3. Exit\n";
cout<<"\n
Enter Choice";
cin>>choice;
switch(choice)
{
case 1:for(i=0;i<m;i++)
{
a[i].ShowDetails();
a[i].Display_Reservation();
a[i].DisplayFare();
}
break;
case 2:for(i=0;i<n;i++)
{
na[i].ShowDetails();
na[i].DisplayClass();
na[i].Display_Reservation();
}
break;
case 3:exit(0);
}
}
}
•
When two or more types of inheritances are combined together then it forms the
hybrid inheritance. The following Fig. 3.4.5 represents the typical scenario of
hybrid inheritance.

•
The following implementation shows that multiple and multilevel inheritance is
combined together to form a hybrid inheritance.
C++ Program
#include<iostream>
using namespace std;
class A
{
protected:
int x;
public:
void get_a(int);
void put_a();
};
void A::get_a(int a)
{
x=a;
}
void A::put_a()
{
cout<<"\n
The value of x is "<<x;
}
class B:public A
{
protected:
int y;
public:
void get_b(int);
void put_b();
};
void B::get_b(int b)
{
y=b;
void B::put_b()
{.
cout<<"\n
The value of y is "<<y;
}
class D
{
protected:
int t;
public:
void get_d(int);
void put_d();
};
void D::get_d(int d)
{
t=d;
}
void D::put_d()
{
cout<<"\n
The value of t is "<<t;
}
//multiple inheritance added in the multilevel inheritance
class C:public B,public D
{
int z;
public:
void display();
};
void C::display()
{
z=y+t+10;
put_a();//member of
class A
put_b();//member of
class B
put_d();//member of
class D
cout<<"\n
The value of z is "<<z;
}
int main()
{
C obj://object of
class C
//accessing class A member via object of class
C
obj.get_a(10);
//accessing class B
member via object of class C
obj.get_b(20);
////accessing class C
member via object of class C
obj.get_d(30);
obj.display();
cout<<endl;
return 0;
}
Output
The value of x is 10
The value of y is 20
The value of t is 30
The value of z is 60
Example :
2 Write a complete C++ program to do the following:
i)
'Student' is a base class, having two data members: entryno and name; entryno
is integer and name of 20 characters long. The value of entryno is 1 for
Science student and 2 for Arts student, otherwise it is an error.
ii)
'Science' and 'Arts' are two derived classes, having respectively data items
marks for Physics, Chemistry, Mathematics and marks for English, History,
Economics.
iii) Read
appropriate data from the screen for 3 Science and 2 Arts Students.
iv)
Display entryno, name, marks for Science students first and then for Arts
students.
Solution :
#include<iostream>
using namespace std;
class student
{
protected:
int entryno;
char name[20];
public:
void Input()
{
cout<<"Enter
name of the student"<<endl;
cin>>name;
}
void display()
{
cout<<"Student
Name: "<<name<<endl;
}
};
class science:public student
{
float physics;
float chemistry;
float maths;
public:
void Input()
{
student::Input();
cout<<"Enter
marks for Physics: ";
cin>>physics;
cout<<"Enter
marks for Chemistry: ";
cin>>chemistry;
cout<<"Enter
marks for Mathematics:
cin>>maths;
}
void display()
{
entryno=1;
cout<<"\n\t
Entry Number for Science student is: "<<entryno<<endl;
student::display();
cout<<"\nMarks
in Physics: ";
cout<<physics;
cout<<"\nMarks
in Chemistry: ";
cout<<chemistry;
cout<<"\nMarks
in Mathematics: ";
cout<<maths;
}
};
class arts:public student
{
float english;
float history;
float economics;
public:
void Input()
{
student::Input();
cout<<"\nEnter
marks for English: ";
cin>>english;
cout<<"\nEnter
marks for history: ";
cin>>history;
cout<<"\nEnter
marks for Economics: ";
cin>>economics;
}
void display()
{
entryno=2;
cout<<"\n\t
Entry number for Arts student is: "<<entryno<<endl;
student::display();
cout<<"\nMarks
in English: ";
cout<<english;
cout<<"\nMarks
in History: ";
cout<<history;
cout<<"\nMarks
in Economics: ";
cout<<economics;
}
};
void main()
{
science s1[3];
arts a1[3];
int i,j,k,l;
cout<<"\nEntry
for Science students "<<endl;
for(i=0;i<3;i++)
{
s1[i].Input();
}
cout<<"Details
of three Science students are "<<endl;
for(j=0;j<3;j++)
{
s1[j].display();
}
cout<<"\n\nEntry
for Arts students "<<endl;
for(k=0;k<3;k++)
{
a1[k].Input();
}
cout<<"Details
of three Arts students are "<<endl;
for(1=0;1<3;1++)
{
a1[1].display();
}
}
Example: 3
How can you pass parameters to the constructors
of base classes in multiple inheritance? Explain with suitable example.
Solution :
#include<iostream>
using namespace std;
class A
{
public:
A(int a)
{
cout<<"\n
Constructor for class A is called, value1= "<<a;
}
};
class B
{
public:
B(float b)
{
cout<<"\n
Constructor for class B is called, value2= "<<b;
}
};
class C:public A,public B
{
public:
C(int a,float
b):A(a),B(b)
{
cout<<"\n
Constructor for child class C is called value1= "<<a<<" value2=
"<<<b;
}
};
void main()
{
cout<<"\n\t
Creating class objects....";
C obj(10,20.1);
cout<<endl;
}
Creating class objects....
Constructor for class
A is called, value1= 10
Constructor for class
B is called, value2= 20.1
Constructor for child
class C is called value1= 10 value2= 20.1
1. Explain with
examples, the types of inheritance in C++.
2. Explain the types
of inheritance with example.
3. What is multiple
inheritance? Discuss the syntax and rules of multiple inheritance in C++. How
can you pass parameters to the constructors of base classes in multiple
inheritance? Explain with suitable example.
4. What is
inheritance? List out the advantages of inheritance.
5. Write a C++ program
to illustrate the concept of hierarchical inheritance.
6. Write C++ program
to implement multiple inheritance.
Object Oriented Programming: Chapter 3: Inheritance and Compile Time Polymorphism : Tag: Oops, Computer Programming : C++ Programming | Object Oriented Programming - Types of Inheritance
Object Oriented Programming (OOPs)
CS25C07 2nd Semester CSE, CSE(CY) Depts | 2025 Regulation | 2nd Semester 2025 Regulation
English Essentials II
EN25C02 2nd Semester | 2025 Regulation | 2nd Semester 2025 Regulation
Tamils and Technology தமிழர்களும் தொழில்நுட்பமும்
UC25H02 2nd Semester | 2025 Regulation | 2nd Semester 2025 Regulation
Linear Algebra
MA25C02 2nd Semester | 2025 Regulation
Applied Physics (CSIE) II
PH25C03 2nd Semester AIDS, CSE, IT, CSE(CY) Dept | 2025 Regulation | 2nd Semester 2025 Regulation
Digital Principles and Computer Organization
CS25C06 2nd Semester AIDS, CSE, IT, CSE(CY) Dept | 2025 Regulation | 2nd Semester 2025 Regulation
Basic Electrical and Electronics Engineering
EE25C01 2nd Semester | 2025 Regulation | 2nd Semester 2025 Regulation
Object Oriented Programming (OOPs)
CS25C07 2nd Semester CSE, CSE(CY) Depts | 2025 Regulation | 2nd Semester 2025 Regulation
Re-Engineering for Innovation
ME25C05 2nd Semester | 2025 Regulation | 2nd Semester 2025 Regulation
Object Oriented Programming (OOPs) - Laboratory
CS25C07 2nd Semester CSE, CSE(CY) Depts | 2025 Regulation | 2nd Semester 2025 Regulation