Với này mẫu mã:C++ Exceptions và thừa kế từ std :: ngoại lệ
#include <iostream>
#include <stdexcept>
class my_exception_t : std::exception
{
public:
explicit my_exception_t()
{ }
virtual const char* what() const throw()
{ return "Hello, world!"; }
};
int main()
{
try
{ throw my_exception_t(); }
catch (const std::exception& error)
{ std::cerr << "Exception: " << error.what() << std::endl; }
catch (...)
{ std::cerr << "Exception: unknown" << std::endl; }
return 0;
}
tôi nhận được kết quả như sau:
Exception: unknown
Tuy nhiên, chỉ đơn giản là làm cho thừa kế my_exception_t
từ std::exception
public
, tôi nhận được sản lượng sau:
Exception: Hello, world!
Ai đó có thể pl dễ dàng giải thích cho tôi tại sao loại thừa kế lại quan trọng trong trường hợp này? Điểm thưởng cho một tham chiếu trong tiêu chuẩn.
Được chấp nhận cho tham chiếu chuẩn; cảm ơn! – fbrereto