>>175
>いつからオブジェクト指向に多重継承が必須になったの?

同一オブジェクトであっても、状況によって『属性』が変わる場合もあるから。
シミュレーションなんかを作った時も、現実との不一致を常に考慮しなければならない。
システムのアップデート時も、同一オブジェクトであってもその『属性』が変わってしまう。

実在気体 理想気体
  ↖  ↗
   気体

随意筋 不随意筋
  ↖ ↗
  チンポ

波動  粒子
 ↖ ↗
  光

@ どうして多重継承が必要か?
 多重継承というのは、1つのクラスに2つの親クラスのメソッドを引き継ぎたい時に使います。例えば、
ゲームで使用するオブジェクトは大抵アップデート(状態の更新)する必要があります。
また画面に表示させるには描画メソッドが必須でしょう。ゲーム内で使用されるクラスの多くは、このどちらか、
もしくは両方の機能を持つことになるはずなので、その動作定義を親クラスでしておくと便利になります。
ただ、親クラスでUpdateメソッドとDrawメソッド(共に純粋仮想関数)を定義してしまうと、
描画の必要の無い派生クラスではDrawメソッドが不必要になってしまいます。
必要無いメソッドを空実装しなければならないというのは、クラスの設計として間違っています。
もちろんアップデートの必要が無い描画クラスについてもUpdateメソッドの空実装をしなければいけません。
http://marupeke296.com/CPP_No8_MultiClass.html