问题:(1)为什么在struct ooops已经多态过的what()在throw *p时会出unknown error呢?
(2)catch里的std::exception&的&可以不可以不加?
(3)throw的到底是什么东西,原文的注释里写的是std::exception的copy constructor?
struct ooops : std::exception {
const char* what() const NOEXCEPT /*noexcept*/ override{ return "Ooops!\n"; }
};
int test_exception_2()
{
ooops e;
std::exception* p = &e;
try {
throw e; // throwing copy-constructs: ooops(e)
} catch (std::exception& ex) {
std::cout << ex.what(); // 0oops!
}
try {
throw *p; // throwing copy-constructs: std::exception(*p)
} catch (std::exception& ex) {
std::cout << ex.what(); // Unknown exception
}
return 0;
}
————————————————
版权声明:本文为CSDN博主「fengbingchun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengbingchun/article/details/78303734
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。