我有一个来自A
的课程std::exception
,还有另一个来自B
的课程A
。我已经覆盖了what()
和A
类的B
函数。我知道,如果我有像这样的阻挡
catch(A& ob){
std::cout << ob.what();
}
这将捕获从A
类型和B
类型派生的对象
A
。但对于B
个对象,它还会调用特定的what()
函数
到A
。为什么会这样?
答案 0 :(得分:0)
这种情况发生的唯一方法是B::what()
不覆盖基类中的函数,如果它的签名与基类中的函数不匹配,就会发生这种情况。
请确保您忘记在const
中设置B
,以匹配基类中的const char* what() const
。