【发布时间】:2014-12-17 07:53:00
【问题描述】:
这一切都在这个例子中
class MyException: std::runtime_error // note, there is no public keyword in inheritance
{
public:
MyException(const std::string & x)
: std::runtime_error(x)
{}
};
int main( )
{
try
{
throw MyException("foo");
}
catch (std::exception & e )
{
std::cout << "catched std exception: " << e.what() << std::endl;
}
catch (...)
{
std::cout << "catched ... " << std::endl;
}
}
它写入标准输出字符串“catched ...”。但是,如果我将继承更改为class MyException : public std::runtime_error,它会按预期工作(对我而言)并写入“catched std exception: foo”
c++ 标准的哪一部分需要这种行为?为什么?在什么情况下这种行为可能有用?
【问题讨论】: