近い将来、試験が予定されていますが、答えが見つからなかった質問に本当に悩まされています。
クラスが次のようにクラスCI
を継承するとSup
します。
class CI: protected Sup
{};
なぜこれは分類遺産ではないのですか?
事前に感謝し、私はすべての助けに感謝します。
近い将来、試験が予定されていますが、答えが見つからなかった質問に本当に悩まされています。
クラスが次のようにクラスCI
を継承するとSup
します。
class CI: protected Sup
{};
なぜこれは分類遺産ではないのですか?
事前に感謝し、私はすべての助けに感謝します。
C ++では、パブリック継承のみが実際の継承と見なされます。つまり、サブクラスはそのスーパークラスのインターフェイス(つまり、IS-A関係)を継承します。まともな継承は、リスコフの置換原則を満たす必要があります。
保護された/プライベートの継承に関しては、それらは実際には一種の包含/構成です。派生クラスはその基本クラスのインターフェイスを(保護された/プライベートメンバーとして)非表示にし、基本クラスの実装(つまり、HAS-AまたはIs- )のみを使用します。実装された期間内の関係)。
理解を深めるために、SOに関するこの質問を参照してください。C++で実際にプライベートまたは保護された継承が必要なのはなぜですか。
とは言うものの、保護/プライベート継承はC ++の議論の余地のある機能であり、JavaやC#などのC++の後継者によって放棄されています。