EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 600+ Courses All in One Bundle
  • Login

Multiple Inheritance in C++

Home » Software Development » Software Development Tutorials » C ++ Programming Tutorial » Multiple Inheritance in C++

Multiple Inheritance in C++

Introduction to Multiple Inheritance in C++

Inheritance is an object-oriented property concept where a class can access the properties and methods of the other class. The class which attains the qualities of the other class is called the derived/child class. The class which gives the right to giving its properties to other classes is called base/parent class.

In the concept of Multiple Inheritance, there are multiple base classes and a child class. The derived class can attain its qualities from all the base classes. Let us move further in understanding the concept of Multiple Inheritance in C++ programming language.

Start Your Free Software Development Course

Web development, programming languages, Software testing & others

Diagram and Syntax of Multiple Inheritance

The diagram for this is:

Diagram:

Multiple Inheritance in C++ 2

As per the above diagram, we can clearly state that in the case of the concept of multiple inheritances, a derived class can get its properties from both base classes.

Syntax:

class A
{
//code
}
class B
{
//code
}
class c: public A, public B (access_modifier class_name)
{
//code
}

How it Works in C++?

Below, let us see the example pertaining to the concept of multiple inheritance in C++ programming language.

#include <iostream>
using namespace std;
class Base_class_1
{
public:
void show_1()
{
cout<<" This is show function of first base class"<<endl;
}
};
class Base_class_2
{
public:
void show_2()
{
cout<<" This is show function of second base class"<<endl;
}
};
class derived_class: public Base_class_1,public Base_class_2
{
public:
void show_3()
{
cout<<" This is show function of the derived class"<< endl;
}
};
int main()
{
derived_class d;
d.show_1();
d.show_2();
d.show_3();
}

Popular Course in this category
C++ Training (4 Courses, 5 Projects, 4 Quizzes)4 Online Courses | 5 Hands-on Projects | 37+ Hours | Verifiable Certificate of Completion | Lifetime Access | 4 Quizzes with Solutions
4.5 (4,837 ratings)
Course Price

View Course

Related Courses
Java Training (40 Courses, 29 Projects, 4 Quizzes)C Programming Training (3 Courses, 5 Project)

Output:

Multiple Inheritance in C++ working

Here, according to the code:

  • There are two base classes written and each one had its own method.
  • Then we had written a derived class that inherits the properties of both the classes. This is done by adding a colon and providing both the base class names.
  • In the main class, we had only created an object for the derived class. And access all the methods of all the classes.
  • In this way, the inheritance can be done and all the base class properties/variables/methods can be successfully accessed in the derived classes.

In multiple inheritance there can be any number of base classes which should be only greater than 2.

Examples of multiple inheritance in C++

Let us check a few examples for the concept of multiple inheritance.

Example #1

Code:

#include <iostream>
using namespace std;
class Value_1
{
public:
int a = 10;
int b = 20;
};
class Value_2
{
public:
int c = 30;
int d = 40;
};
class Value_3
{
public:
int e = 50;
int f = 60;
int g = 70;
};
class Value_4: public Value_1,public Value_2,public Value_3
{
public:
void sum()
{
int result;
result= a+b+c+d+e+f+g;
cout<<" Sum of all the values is: "<<result<< endl;
}
};
int main()
{
Value_4 v;
v.sum();
}

Output:

Multiple Inheritance in C++ eg2.1

Now, if we try to exclude the class Value_3 from the inherited classes list. The output would be as below.

Multiple Inheritance in C++ eg2.2

The sum method of the class Value_4 would not find the values of the variables ‘e, f and g’ as the class Value_3 is not being inherited by the class Value_4. So, the output for that program is the compilation error where the values of the variables are not being declared.

Example #2

Code:

#include <iostream>
using namespace std;
class Sum
{
public:
int a = 10;
int b = 20;
void sum()
{
cout<<" Result of sum is: "<<a+b<<endl;
}
};
class Mul
{
public:
int c = 30;
int d = 40;
void mul()
{
cout<<" Result of multiplication is: "<<c*d<<endl;
}
};
class Div
{
public:
int e = 50;
int f = 60;
void divi()
{
cout<<" Result of division is: "<< f/e<<endl;
}
};
class Mod
{
public:
int g = 70;
int h = 20;
void mod()
{
cout<<" Result of Modulo Division is: "<< g%h<<endl;
}
};
class Sub: public Sum,public Mul,public Div,public Mod
{
public:
int i = 80;
int j = 90;
void sub()
{
sum();
mul();
divi();
mod();
cout<<" Result of subtraction is: "<<i-j<< endl;
}
};
int main()
{
Sub s;
s.sub();
}

Output:

eg3

Here, as observed in the derived class method, we have called all the methods of the base classes. And in the main method, we had created an object and called the method only for the derived class, which gave us the perfect output of all the methods.

Example #3

Code:

#include <iostream>
using namespace std;
class First
{
public:
void display_1( int a, int b)
{
cout<< "Values of a and b are: "<<a <<" and "<<b<<endl;
}
};
class Second
{
public:
void display_2()
{
cout<< "This is just an empty method for displaying"<<endl;
}
};
class Third: public First,public Second
{
public:
void display_3(float f1, float f2)
{
cout<< "Values of a and b are: "<<f1 <<" and "<<f2<<endl;
}
};
int main()
{
int a;
int b;
cout<<" Enter value for a: "<<endl;
cin>>a;
cout<<" Enter value for b: "<<endl;
cin>>b;
float f1;
float f2;
cout<<" Enter value for float f1: "<<endl;
cin >>f1;
cout<<" Enter value for float f2: "<<endl;
cin>>f2;
Third t;
t.display_1(a,b);
t.display_2();
t.display_3(f1,f2);
}

Output:

eg4

In this way we can even call the parameterised methods between derived and base classes. In the same way, we can even manipulate the data of the base class in the derived class.

As an exercise, try making few changes to the variables in the methods of derived classes and check how it works.

Conclusion

Here, we have seen the concept of multiple inheritance which can take place through the concept of variables and methods using the C++ programming language. We even displayed the error output in case of accessing the property of the base class without being inherited by the derived class. Keep practicing with different access modifies (public, private and protected) and understand the workflow for the same.

Recommended Articles

This is a guide to Multiple Inheritance in C++. Here we discuss the introduction and syntax of Multiple Inheritance in C++ along with examples and code implementation. You can also go through our other related articles to learn more –

  1. C++ Garbage Collection
  2. C++ Compilers
  3. String Functions in C++
  4. Type Casting in C++

C++ Training (4 Courses, 3 Projects, 4 Quizzes)

4 Online Courses

5 Hands-on Projects

37+ Hours

Verifiable Certificate of Completion

Lifetime Access

4 Quizzes with Solutions

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
C plus plus Programming Tutorial
  • Inhertiance
    • Types of Inheritance in C++
    • Single Inheritance in C++
    • Multiple Inheritance in C++
    • Hierarchical Inheritance in C++
    • Multilevel Inheritance in C++
    • Hybrid Inheritance in C++
  • Basic
    • Introduction To C++
    • What is C++
    • Features of C++
    • Applications of C++
    • Best C++ Compiler
    • C++ Data Types
    • C++ Double
    • C++ unsigned int
    • User Defined Data Types in C++
    • Variables in C++
    • C++ Keywords
    • Pointers in C++
    • C++ Void Pointer
    • Function Pointer in C++
    • Iterator in C++
    • C++ Commands
    • Object in C++
    • C++ Literals
    • C++ Reference
    • C++ Undefined Reference
    • String in C++
    • C++ Programming Language (Basics)
    • C++ Identifiers
    • C++ Header Files
    • Type Casting in C++
    • C++ Formatter
  • Operators
    • C++ Operators
    • Arithmetic Operators in C++
    • Assignment Operators in C++
    • Bitwise Operators in C++
    • Relational Operators in C++
    • Boolean Operators in C++
    • Unary Operators in C++
    • C++ Operator[]
    • Operator Precedence in C++
    • C++ operator=()
  • Control Statements
    • Control Statement in C++
    • if else Statement in C++
    • Else If in C++
    • Nested if in C++
    • Continue Statement in C++
    • Break Statement in C++
    • Switch Statement in C++
    • goto Statement in C++
    • C++ Struct
    • Loops in C++
    • Do While Loop in C++
    • Nested Loop in C++
  • Functions
    • C++ String Functions
    • Math Functions in C++
    • Friend Function in C++
    • Recursive Function in C++
    • Virtual Functions in C++
    • strcat() in C++
    • swap() in C++
    • strcmp() in C++
    • ceil function in C++
    • C++ begin()
    • size() in C++
    • C++ test()
    • C++ any()
    • C++ Bitset
    • C++ find()
    • C++?Aggregation
    • C++?String append
    • C++ String Copy
    • C++ end()
    • C++ endl
    • C++ push_back
    • C++ shuffle()
    • malloc() in C++
    • C++ reserve()
    • C++ unique()
    • C++ sort()
    • C++ find_if()
    • Reflection in C++
    • C++ replace()
    • C++ search()
    • C++ Memset
    • C++ size_t
    • C++ Substring
    • C++ Max
    • C++ absolute value
    • C++ memcpy
    • C++ wchar_t
    • C++ free()
    • C++ sizeof()
    • C++ Move Semantics
  • Array
    • Arrays in C++
    • 2D Arrays in C++
    • 3D Arrays in C++
    • Multi-Dimensional Arrays in C++
    • C++ Array Functions
    • String Array in C++
    • C++ Length of Array
    • C++ arraylist
  • Constuctor and Destructor
    • Constructor and Destructor in C++
    • Constructor in C++
    • Destructor in C++
    • Copy Constructor in C++
    • Parameterized Constructor in C++
  • Overloading and overriding
    • Overloading and Overriding in C++
    • Overloading in C++
    • Overriding in C++
    • Function Overloading in C++
    • Function Overriding in C++
    • Method Overloading in C++
  • Sorting
    • Sorting in C++ 
    • Heap Sort in C++
    • C++ Vector Sort
    • Insertion Sort in C++
    • Selection Sort in C++
  • Advanced
    • C++ namespace
    • Encapsulation in C++
    • Access Modifiers in C++
    • Abstract Class in C++
    • C++ Class and Object
    • What is Template Class in C++?
    • C++ Algorithm
    • Data Structures and Algorithms C++
    • C++ Garbage Collection
    • Virtual Keyword in C++
    • Access Specifiers in C++
    • Storage Class in C++
    • Call by Value in C++
    • Multimap in C++
    • C++ Multiset
    • C++ Lambda Expressions
    • Stack in C++
    • C++ Static
    • C++ static_cast
    • Deque in C++
    • C++ Vector Functions
    • C++ 2D Vector
    • C++ List
    • C++ Mutable
    • Enum in C++
    • Abstraction in C++
    • Signal in C++
    • C++ Queue
    • Priority Queue in C++
    • Regular Expressions in C++
    • C++ Hash Table
    • File Handling in C++
    • C++ Stream
    • ifstream in C++
    • C++ ofstream
    • C++ fstream
    • C++ Read File
    • C++ iomanip
    • Macros in C++
    • Templates in C++
    • C++ setprecision
    • C++ Int to String
    • C++ thread( )
    • C++ Thread Pool
    • C++ thread_local
  • Programs
    • Patterns in C++
    • Star Patterns In c++
    • Swapping in C++
    • Reverse Number in C++
    • Palindrome Program in C++
    • Palindrome in C++
    • Factorial Program in C++
    • Fibonacci Series in C++
    • Square Root in C++
    • Random Number Generator in C++
    • Prime Number in C++
    • Leap Year Program in C++
    • Anagram in C++
    • Armstrong Number in C++
    • Reverse String in C++
    • Socket Programming in C++
    • Matrix Multiplication in C++
    • C++ using vs typedef
    • C++ vector vs list
    • C++ vector vs array
  • Interview question
    • C++ Interview Questions
    • Multithreading Interview Questions C++

Related Courses

C++ Training Course

Java Training Course

C Programming Course

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Java Tutorials
  • Python Tutorials
  • All Tutorials
Certification Courses
  • All Courses
  • Software Development Course - All in One Bundle
  • Become a Python Developer
  • Java Course
  • Become a Selenium Automation Tester
  • Become an IoT Developer
  • ASP.NET Course
  • VB.NET Course
  • PHP Course

© 2020 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you
Book Your One Instructor : One Learner Free Class

Let’s Get Started

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you
EDUCBA Login

Forgot Password?

EDUCBA
Free Software Development Course

Web development, programming languages, Software testing & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

Special Offer - C++ Training (4 Courses, 3 Projects, 4 Quizzes) Learn More