Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Multiple Inheritance in C++

Introduction

Multiple inheritance is a feature of some object-oriented programming languages in which a class can inherit characteristics and features from more than one parent class. C++ supports multiple inheritance, allowing a derived class to inherit from multiple base classes.

Basic Syntax

To declare a class that inherits from multiple base classes, you list the base classes in a comma-separated list in the class declaration. For example:

class Derived : public Base1, public Base2 {
    // class members and methods
};
                

Example

Let's look at a more detailed example to understand how multiple inheritance works in C++. Consider the following scenario where we have two base classes, Person and Employee, and a derived class Manager that inherits from both:

#include <iostream>
using namespace std;

class Person {
public:
    void setName(string n) {
        name = n;
    }
    void display() {
        cout << "Name: " << name << endl;
    }
private:
    string name;
};

class Employee {
public:
    void setEmployeeID(int id) {
        employeeID = id;
    }
    void display() {
        cout << "Employee ID: " << employeeID << endl;
    }
private:
    int employeeID;
};

class Manager : public Person, public Employee {
public:
    void display() {
        Person::display();
        Employee::display();
    }
};

int main() {
    Manager mgr;
    mgr.setName("John Doe");
    mgr.setEmployeeID(12345);
    mgr.display();
    return 0;
}
                

In the above example, the Manager class inherits from both Person and Employee. As a result, it has access to the members and methods of both classes. We override the display method in Manager to call the display methods of both base classes.

Handling Ambiguities

One of the challenges of multiple inheritance is handling ambiguities when the same member or method is inherited from more than one base class. For example:

class Base1 {
public:
    void show() {
        cout << "Base1" << endl;
    }
};

class Base2 {
public:
    void show() {
        cout << "Base2" << endl;
    }
};

class Derived : public Base1, public Base2 {
public:
    void show() {
        Base1::show();
        Base2::show();
    }
};

int main() {
    Derived d;
    d.show();
    return 0;
}
                

In this example, both Base1 and Base2 have a method named show. The Derived class resolves this ambiguity by explicitly specifying which show method to call using the scope resolution operator (::).

Advantages and Disadvantages

Advantages

  • Multiple inheritance allows a class to be more versatile by inheriting features from multiple classes.
  • It promotes code reusability as common functionalities can be inherited from multiple sources.

Disadvantages

  • It can lead to ambiguity and complexity, especially when the same method or attribute is inherited from multiple base classes.
  • It can make the code harder to understand and maintain.

Conclusion

Multiple inheritance is a powerful feature in C++ that allows a class to inherit from more than one base class. While it provides flexibility and promotes code reuse, it also introduces complexity and potential for ambiguity. It's important to use this feature judiciously and be aware of the potential pitfalls.