我不知道如何在简短的主题行中很好地表达这个问题,所以让我尝试更长的解释。假设我有这些异常类:
class ExceptionTypeA : public std::runtime_error
{
// stuff
};
class ExceptionTypeB : public std::runtime_error
{
// stuff
operator ExceptionTypeA() const; // conversion operator to ExceptionTypeA
};
然后我可以这样做,并让它触发 catch 块吗?
try
{
throw ExceptionTypeB();
}
catch (ExceptionTypeA& a)
{
// will this be triggered?
}
我猜它不会,这很不幸,但我想我会问,因为我在网上或 SO 上找不到任何信息。是的,我意识到我可以在我的编译器中运行程序并看看会发生什么,但这并不能告诉我标准对这种行为的描述,只是我的编译器实现了什么(我不相信它)。