我将派生类对象作为异常抛出。我有一个带有基类对象类型参数的catch块和一个catch all块。 我已将基类继承为私有。 我怀疑期望基类对象的catch块会捕获异常。但事实并非如此。 当我公开继承基类时,它按预期工作。 为什么私有继承会改变catch块的工作。
#include <iostream>
using namespace std;
class MyExcept1 {
public:
int a;
};
class MyExcept2:MyExcept1{
public:
int b;
};
int main()
{
try{
MyExcept2 myexp1;
throw myexp1;
}
catch(MyExcept1 e2){
cout << "Caught MyExcept2 " << endl;
}
catch(...){
cout << " Defaule catch block " << endl;
}
return 0;
}