Путаница наследования C ++ - PullRequest
0 голосов
/ 08 ноября 2019
#include<iostream>
using namespace std;
class Base{};
class Derived:public Base{};
int main(){
    Derived d;
    try{
        throw d;
    }

    catch(Base b){
        cout<<"1";
    }
    catch(Derived d){
        cout<<"2";
    }
    return 0;
}

Почему эта программа отображает вывод 1, а не 2? Если бы я бросил объект базового класса, а результат был равен 2, проблем не возникнет, поскольку производный класс - это базовый класс вместе с дополнительными функциями. Но разве это наоборот?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...