派生クラスのオブジェクトを渡している場合は、派生クラスのcatchブロックを呼び出す必要があります。しかし、出力は、例外が基本クラスによって捕捉されたと言います。どうして?派生クラスのオブジェクトを投げているときに、基本クラスのブロックをキャッチすると例外がキャッチされるのはなぜですか?
#include<iostream>
using namespace std;
class Base {};
class Derived: public Base {};
int main()
{
Derived d;
// some other stuff
try {
// Some monitored code
throw d;
}
catch(Base b) {
cout<<"Caught Base Exception";
}
catch(Derived d) { //This catch block is NEVER executed
cout<<"Caught Derived Exception";
}
getchar();
return 0;
}
派生した大文字と小文字を区別してキャッチを移動し、次に派生した大文字を使用してキャッチを移動する必要があります。彼らは過負荷ではありません。 –
二重引用符ではなく、 'catch'句が異なります。 – Oktalist
[スキップジャックからの同答](http://stackoverflow.com/a/39537680/366904) –