16

私は内部使用のためのフレームワークを開発中であり、すべての継承を仮想化することで、私のクラスから継承する他の開発者のダイヤモンドの問題を回避できると考えました。

私は周りを見回して、ダイヤモンドの問題に直面したときに仮想継承を使用することについて多くの議論を見つけましたが、それを先取りすることについては何もありませんでした.

4

2 に答える 2

13

非仮想継承では、各コンストラクターは直接の基本クラスのコンストラクターのみを呼び出すことに注意してください。ただし、仮想継承では、最も派生したクラスがすべての仮想基本クラスのコンストラクターを呼び出す必要があります。

基本クラスの初期化が必要な場合、仮想継承は、ツリーの下にあるすべてのクラスがそれを正しく初期化する必要があることを意味します。また、ツリーの中間にあるクラスは、それ自身の基本クラスが希望どおりに初期化されることを当てにすることはできません。

于 2013-06-09T18:06:37.787 に答える