C++ c++;使用内建类时捕获异常

C++ c++;使用内建类时捕获异常,c++,exception,C++,Exception,我有这样的代码: Class A{}; Class B : A {}; void foo() { throw new B; } 这里我们只能使用catch(B*e)捕获异常。但是为什么我们不能用catch(A*e)捕捉它呢。 这是因为继承中存在私有访问类型吗 是的,这就是原因 由于B私下继承A,除了B之外,没有人知道继承。 因此B对象不被视为a对象,并且不能转换为a按值抛出异常和按常量捕获引用,此处不需要堆分配。

我有这样的代码:

Class A{};

Class B : A {};

void foo()
{
  throw new B;
}
这里我们只能使用catch(B*e)捕获异常。但是为什么我们不能用catch(A*e)捕捉它呢。
这是因为继承中存在私有访问类型吗

是的,这就是原因

由于
B
私下继承
A
,除了
B
之外,没有人知道继承。
因此
B
对象不被视为
a
对象,并且不能转换为
a

按值抛出异常和按常量捕获引用,此处不需要堆分配。