Moștenire multiplă

O clasă poate moșteni din mai multe clase de bază simultan.

class Zburator {
public:
  void zboara() { cout << "Zbor!" << endl; }
};

class Inotator {
public:
  void inoata() { cout << "Inot!" << endl; }
};

class Rata : public Zburator, public Inotator {
public:
  void macane() { cout << "Mac mac!" << endl; }
};

Rata r;
r.zboara();  // din Zburator
r.inoata();  // din Inotator
r.macane();
Problema Diamond: Dacă două clase de bază moștenesc din aceeași clasă, există ambiguitate. Rezolvare: moștenire virtuală (virtual public Base).