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
按值抛出异常和按常量捕获引用,此处不需要堆分配。