Inheritance in C++ (original) (raw)
Last Updated : 15 Jun, 2026
Inheritance is a core Object-Oriented Programming (OOP) concept that allows one class to inherit the properties and behaviors of another class. It helps create a new class from an existing class, improving code reusability and hierarchical organization of classes.
- A derived class can reuse the data members and member functions of the base class without rewriting the code.
- A derived class can add new members or modify existing functionality according to requirements.
- Inheritance helps reduce code duplication and supports extensibility in C++ programs.
**Example: In the following example, Animal is the base class and Dog, Cat and Cow are derived classes that extend the Animal class.

Illustration for Inheritance
C++ `
#include using namespace std;
class Animal { public: void sound() { cout << "Animal makes a sound" << endl; } };
class Dog : public Animal { public: void sound() { cout << "Dog barks" << endl; } };
class Cat : public Animal { public: void sound() { cout << "Cat meows" << endl; } };
class Cow : public Animal { public: void sound() { cout << "Cow moos" << endl; } };
int main() { Dog d; d.sound();
Cat c;
c.sound();
Cow cow;
cow.sound();
return 0;}
`
Output
Dog barks Cat meows Cow moos
Explanation:
- Animal is the base class with a function sound().
- Dog, Cat, and Cow are derived classes, each defining their own sound() method.
- In main(), objects of Dog, Cat, and Cow are created separately.
- When we call sound() on each object, the respective child class method runs (Dog barks, Cat meows, Cow moos).
Syntax
class ChildClass : public ParentClass
{
// Additional fields and methods
};
How Inheritance Works in C++?
Inheritance in C++ allows a class to acquire the properties and behaviors of another class using the colon (:) operator. It helps create a relationship between classes, enabling code reuse and easier maintenance.
- The derived (child) class inherits accessible data members and member functions from the base (parent) class.
- Inheritance reduces code duplication and promotes code reusability.
- The child class can add new features or override inherited functions to provide its own implementation.
Types of Inheritance in C++

Below are the different types of inheritance which are supported by C++.
1. Single Inheritance
In single inheritance, a sub-class is derived from only one super class. It inherits the properties and behavior of a single-parent class. Sometimes, it is also known as simple inheritance.

Single Inheritance
C++ `
#include using namespace std;
class Vehicle { public: Vehicle() { cout << "This is a Vehicle" << endl; } };
class Car : public Vehicle { public: Car() { cout << "This Vehicle is Car" << endl; } };
int main() {
Car obj;
return 0;}
`
Output
This is a Vehicle This Vehicle is Car
2. Multiple Inheritance
In Multiple inheritance, one class can have more than one superclass and inherit features from all parent classes.

Multiple Inheritance
C++ `
#include using namespace std;
class LandVehicle { public: void landInfo() { cout << "This is a LandVehicle" << endl; } };
class WaterVehicle { public: void waterInfo() { cout << "This is a WaterVehicle" << endl; } };
// Derived class inheriting from both base classes class AmphibiousVehicle : public LandVehicle, public WaterVehicle { public: AmphibiousVehicle() { cout << "This is an AmphibiousVehicle" << endl; } };
int main() { AmphibiousVehicle obj;
obj.waterInfo();
obj.landInfo();
return 0;}
`
Output
This is an AmphibiousVehicle This is a WaterVehicle This is a LandVehicle
3. Multilevel Inheritance
Multilevel inheritance in C++ means a class is derived from another derived class, forming a chain of inheritance.

Multilevel Inheritance
C++ `
#include using namespace std;
class Vehicle { public: Vehicle() { cout << "This is a Vehicle" << endl; } };
// Derived class from Vehicle class FourWheeler : public Vehicle { public: FourWheeler() { cout << "4 Wheeler Vehicles" << endl; } };
// Derived class from FourWheeler class Car : public FourWheeler { public: Car() { cout << "This 4 Wheeler Vehicle is a Car" << endl; } };
int main() { Car obj; return 0; }
`
Output
This is a Vehicle 4 Wheeler Vehicles This 4 Wheeler Vehicle is a Car
4. Hierarchical Inheritance
In hierarchical 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. For example, cars and buses both are vehicle.

Hierarchical Inheritance
C++ `
#include using namespace std;
class Vehicle { public: Vehicle() { cout << "This is a Vehicle" << endl; } };
class Car : public Vehicle { public: Car() { cout << "This Vehicle is Car" << endl; } };
class Bus : public Vehicle { public: Bus() { cout << "This Vehicle is Bus" << endl; } };
int main() { Car obj1; Bus obj2; return 0; }
`
Output
This is a Vehicle This Vehicle is Car This is a Vehicle This Vehicle is Bus
5. Hybrid Inheritance
When two or more types of inheritance are combined in one program. For example, a class might use multiple inheritance and also be part of a multilevel inheritance chain.

Hybrid Inheritance
C++ `
#include using namespace std;
class Vehicle { public: Vehicle() { cout << "This is a Vehicle" << endl; } };
class Fare { public: Fare() { cout << "Fare of Vehicle" << endl; } };
class Car : public Vehicle { public: Car() { cout << "This Vehicle is a Car" << endl; } };
class Bus : public Vehicle, public Fare { public: Bus() { cout << "This Vehicle is a Bus with Fare"; } };
int main() { Bus obj2; return 0; }
`
Output
This is a Vehicle Fare of Vehicle This Vehicle is a Bus with Fare
Hybrid Inheritance can lead to the diamond problem in C++. This happens when a class inherits from two classes that both share the same base class. As a result the derived class gets multiple copies of the base class members, which creates ambiguity about which one to use.
**Note : The solution is to use virtual inheritance, so only a single copy of the base class is shared.
Virtual inheritance is used to solve the diamond problem in C++. It ensures that when a class inherits the same base class through multiple inheritance paths, only one shared copy of the base class is inherited, avoiding ambiguity.
Advantages of Inheritance in C++
- **Code Reusability: Derived class can directly reuse data members and methods of its base class, avoiding code duplication.
- **Abstraction : Supports abstract classes (classes with pure virtual functions) that define a common interface, enforcing abstraction.
- **Class Hierarchy : You can build hierarchies (base → derived → further derived) to model real-world relationships.
- **Polymorphism : Fully supports runtime polymorphism through virtual functions, and also compile-time polymorphism via function overloading and templates.
Situations where Inheritance may not be suitable
- Changes in the base class can affect all derived classes, making the code tightly dependent.
- Flexibility is reduced, as inheritance fixes relationships, while composition allows easier modification.
- Deep or complex class hierarchies make the code harder to understand, maintain, and debug.
- Multiple inheritance can create ambiguity when the same base class is inherited more than once (diamond problem).
- Using virtual functions can introduce a small runtime overhead due to dynamic dispatch.