0
我有这样的代码:C++捕获异常
Class A{};
Class B : A {};
void foo()
{
throw new B;
}
在这里,我们只能通过捕捉(B * E)赶上例外。但是为什么我们无法使用catch(A * e)来捕捉它。 这是因为私人访问类型的继承?
我有这样的代码:C++捕获异常
Class A{};
Class B : A {};
void foo()
{
throw new B;
}
在这里,我们只能通过捕捉(B * E)赶上例外。但是为什么我们无法使用catch(A * e)来捕捉它。 这是因为私人访问类型的继承?
是的,这正是为什么。
由于B
私下继承A
,除了B
之外,没有人知道继承。 因此,B
对象不被视为A
对象,因此无法将其转换为A
的实例。
通过值引发异常并通过const引用捕获,不需要堆分配。 – rubenvb