0

近い将来、試験が予定されていますが、答えが見つからなかった質問に本当に悩まされています。

クラスが次のようにクラスCIを継承するとSupします。

class CI: protected Sup
{};

なぜこれは分類遺産ではないのですか?

事前に感謝し、私はすべての助けに感謝します。

4

1 に答える 1

4

C ++では、パブリック継承のみが実際の継承と見なされます。つまり、サブクラスはそのスーパークラスのインターフェイス(つまり、IS-A関係)を継承します。まともな継承は、リスコフの置換原則を満たす必要があります。

保護された/プライベートの継承に関しては、それらは実際には一種の包含/構成です。派生クラスはその基本クラスのインターフェイスを(保護された/プライベートメンバーとして)非表示にし、基本クラスの実装(つまり、HAS-AまたはIs- )のみを使用します。実装された期間内の関係)。

理解を深めるために、SOに関するこの質問を参照してください。C++で実際にプライベートまたは保護された継承が必要なのはなぜですか。

とは言うものの、保護/プライベート継承はC ++の議論の余地のある機能であり、JavaやC#などのC++の後継者によって放棄されています。

于 2013-01-16T15:31:33.863 に答える