Multiple Inheritance
Inheriting from multiple classes
Interview Relevant: Diamond problem
Multiple Inheritance
A class can inherit from multiple base classes.
Code Examples
Multiple inheritance and diamond problem.
cpp
1class Flyable {
2public:
3 virtual void fly() { cout << "Flying" << endl; }
4};
5
6class Swimmable {
7public:
8 virtual void swim() { cout << "Swimming" << endl; }
9};
10
11// Multiple inheritance
12class Duck : public Flyable, public Swimmable {
13 // Inherits both fly() and swim()
14};
15
16Duck d;
17d.fly();
18d.swim();
19
20// Diamond Problem
21class Animal { public: int age; };
22class Mammal : public Animal {};
23class Bird : public Animal {};
24class Platypus : public Mammal, public Bird {}; // Two copies of Animal!
25
26// Platypus p;
27// p.age; // Ambiguous! Which Animal::age?
28
29// Solution: Virtual inheritance
30class Animal2 { public: int age; };
31class Mammal2 : virtual public Animal2 {};
32class Bird2 : virtual public Animal2 {};
33class Platypus2 : public Mammal2, public Bird2 {}; // Only one Animal2
34
35Platypus2 p2;
36p2.age = 5; // OK - only one copy