0

次のようなコードがあります。

Class A{};

Class B : A {};

void foo()
{
  throw new B;
}

ここでは、catch(B *e) を使用してのみ例外をキャッチできます。しかし、なぜ catch(A *e) を使用してキャッチできないのでしょうか。これは、継承のプライベート アクセス タイプのためでしょうか。

4

1 に答える 1

2

はい、まさにその理由です。

B非公開で継承するためA、誰も継承Bを認識していません。したがって、Bオブジェクトはオブジェクトとは見なされAず、 のインスタンスに変換できませんA

于 2013-05-15T09:47:32.350 に答える