以下程序的输出
#include
using namespace std;
class Base {};
class Derived: public Base {};
int main()
{
Derived d;
try {
throw d;
}
catch(Base b) {
cout<<"Caught Base Exception";
}
catch(Derived d) {
cout<<"Caught Derived Exception";
}
return 0;
}
(A)捕获的派生异常
(B)被捕获的基本异常
(C)编译器错误答案: (B)
说明:如果基类和派生类都被捕获为异常,则派生类的catch块必须出现在基类之前。如果我们把基类放在首位,那么派生类的catch块将永远不会到达。
在Java,编译器本身不允许在派生之前捕获基类异常。在C++中,编译器可能会对此发出警告,但会编译代码。这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。