class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
};
抱歉,这个问题可能听起来很蠢,但我在解析标题时遇到了麻烦。有人能用英语描述一下标题实际上是什么意思吗?我觉得第一件奇怪的事情是关键字virtual
。 myexception
类不是基类,而是继承自已经实现的exception
类,所以为什么要在这里使用virtual
?我想const
是用于返回类型,它是一个c风格的字符串,是常量,另一个const
是为了确保无法修改此对象的任何内容(可以告诉我那个对象是什么吗?)。我不知道throw()
具体做什么,以前从未见过这种语法。
noexcept
的意思是throw()
。来自 cppreference 的解释:"noexcept 是 throw() 的改进版本,在 C++11 中 throw() 已被弃用。与 throw() 不同,noexcept 不会调用 std::unexpected 并且可能不会展开堆栈,这潜在地允许编译器在没有 throw() 运行时开销的情况下实现 noexcept。" - Lightness Races in Orbit