Module: 3
Multiple Inheritance:
• Multiple Inheritance is a feature of C++ where a class can inherit from
more than one class.
• i.e one subclass is inherited from more than one base class.
Multiple Inheritance:
Syntax:
class subclass_name : access_mode base_class1, access_mode
base_class2, ....
{ // body of subclass };
class B
{ ... .. ... };
class C
{ ... .. ... };
class A: public B, public C { ... ... ... };
Here, the number of base classes will be separated by a comma (‘, ‘)
and the access mode for every base class must be specified.
C++ Program:
#include <iostream>
using namespace std;
// first base class
class Vehicle {
public:
Vehicle() { cout << "This is a Vehicle\
n"; }
};
// second base class
class FourWheeler {
public:
FourWheeler()
{
cout << "This is a 4 wheeler
Vehicle\n";
}
};
// sub class derived from two base classes
class Car : public Vehicle, public
FourWheeler {
};
// main function
int main()
{
// Creating object of sub class will
// invoke the constructor of base
classes.
Car obj;
return 0;
}
OUTPUT
This is a Vehicle
This is a 4 wheeler
Vehicle
Multilevel Inheritance:
• In this type of inheritance, a derived class is created from another
derived class.
Syntax:-
class C
{
... .. ...
};
class B:public
C
{
... .. ...
};
class A: public
B
{
... ... ...
};
C++ Program:
#include <iostream>
using namespace std;
// base class
class Vehicle {
public:
Vehicle() { cout << "This is a Vehicle\n"; }
};
// first sub_class derived from class vehicle
class fourWheeler : public Vehicle {
public:
fourWheeler()
{
cout << "Objects with 4 wheels are
vehicles\n";
}
};
// sub class derived from the derived base class
fourWheeler
class Car : public fourWheeler {
public:
Car() { cout << "Car has 4 Wheels\n"; }
};
// main function
int main()
{
// Creating object of sub class will
// invoke the constructor of base classes.
Car obj;
return 0;
}
OUTPUT
This is a Vehicle
Objects with 4 wheels are
vehicles
Car has 4 Wheels
Hierarchical Inheritance:
• In this type of inheritance, more than one subclass is inherited from a
single base class. i.e. more than one derived class is created from a
single base class.
Syntax:-
class A
{
// body of the class
A.
}
class B : public A
{
// body of class B.
}
class C : public A
{
// body of class C.
}
class D : public A
{
// body of class D.
C++ Program
#include <iostream>
using namespace std;
// base class
class Vehicle {
public:
Vehicle() { cout << "This is a Vehicle\
n"; }
};
// first sub class
class Car : public Vehicle {
};
// second sub class
class Bus : public Vehicle {
};
// main function
int main()
{
// Creating object of sub class will
// invoke the constructor of base
class.
Car obj1;
Bus obj2;
return 0;
}
OUTPUT
This is a
Vehicle
This is a
Vehicle
Hybrid (Virtual) Inheritance:
• Hybrid Inheritance is implemented by combining more than one type
of inheritance.
• For example: Combining Hierarchical inheritance and Multiple
Inheritance.
Below image shows the combination of hierarchical
and multiple inheritances:
C++ Program
#include <iostream>
using namespace std;
// base class
class Vehicle {
public:
Vehicle() { cout << "This is a Vehicle\
n"; }
};
// base class
class Fare {
public:
Fare() { cout << "Fare of Vehicle\n"; }
};
// first sub class
class Car : public Vehicle {
};
// second sub class
class Bus : public Vehicle, public Fare
{
};
// main function
int main()
{
// Creating object of sub class will
// invoke the constructor of base
class.
Bus obj2;
return 0;
}
Output
This is a
Vehicle
Fare of Vehicle
Constructors & Destructors
– When a base class and a derived class both have constructor and
destructor functions
•Constructor functions are executed in order of derivation – base
class before derived class.
•Destructor functions are executed in reverse order – the derived class’s
destructor is executed before the base class’s destructor.
– A derived class does not inherit the constructors of its base class.
C++
Inheritance
class Base {
public:
Base()
{ cout
<<
“Const
ructor
Base
Class\
n”;}
~Base()
{cout
<<
int main()
“Destr ---- OUTPUT ----
ucting { Derived Constructor Base Class
Base ob; return Constructor Derived Class
Class\ o; Destructing Derived
}
n”;} Class Destructing Base
}; Class
class Derived : public Base {
public:
Derived() { cout <<
Constructor Derived
Class\n”;} 24