Множественное наследование
class C : public A, public B { };/*Class code here*/
Возможная реализация
class Shape { public:
};virtual void Draw()=0;
class Round { int x,y,r;
public:
};void Draw(){/*Implement here*/}
class Fillable { public:
};virtual void Fill()=0;
Возможная реализация
class Annotateable { char text[50];
public:
const char * GetText() {return text;} void SetText(const char* text) {
};strcpy(this->text, text);}
class Circle: public Round, public Annotateable, public Fillable {
public:
};void Fill() {/*Implement here*/}
Проблемымножественного наследования
Несмотря на мощь и гибкость множественное наследование является потенциальным источником следующих проблем:
несовместимость (перекрытие методов) базовыхклассов между собой;
"ромбовидное наследование" - когда родительские классы порождаемого имеют всвоих иерархиях общий базовый класс.
Засчет этого во многих современных языках ООПмножественное наследование запрещено или ограничено.