Inheritance 将派生类对象作为异常对象抛出。基类对象类型捕获块未捕获它。为什么?

Inheritance 将派生类对象作为异常对象抛出。基类对象类型捕获块未捕获它。为什么?,inheritance,exception-handling,derived-class,base-class,Inheritance,Exception Handling,Derived Class,Base Class,我抛出一个派生类对象作为异常。我有一个带有基类对象类型参数的catch块和一个catch all块。 我已将基类作为private继承。 我预料到期望基类对象的catch块将捕获异常,但事实并非如此。 当我公开继承基类时,它会按预期工作。 为什么私有继承会改变catch块的工作方式 #include <iostream> using namespace std; class MyExcept1 { public: int a; }; class MyExcept2:MyExc

我抛出一个派生类对象作为异常。我有一个带有基类对象类型参数的catch块和一个catch all块。 我已将基类作为private继承。 我预料到期望基类对象的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;
}
#包括
使用名称空间std;
类MyExcept1{
公众:
INTA;
};
类MyExcept2:MyExcept1{
公众:
int b;
}; 
int main()
{
试一试{
myExcept2myExp1;
抛出myexp1;
}
捕获(MyExcept1 e2){

不能先编写代码来理解私有地插入类是否会阻止基类型对象的catch块捕获派生类类型的异常?