这个头函数(virtual const char* What () const throw())的含义是什么?
What is the meaning of this header (virtual const char* what() const throw())?
class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
};
对不起,这个问题可能听起来很愚蠢,但是我在解析标题时遇到了麻烦。有人能用英语描述一下标题的真正含义吗?对我来说,第一件奇怪的事情是关键词virtual
。myexception
类不是基类,继承自已经实现的exception
类,那么为什么在这里使用virtual
呢?我猜const
是为返回类型,这是一个c风格的字符串,是const,和其他const
是确保没有这个对象不能被修改(有人能告诉我这个对象可以是什么?)。我不知道throw()
到底做了什么,以前从未见过这种语法。
虚拟
不添加任何内容,因为被覆盖的方法已经是虚方法。你是对的,可以省略。
const char* what()
成员函数what()
,不带实参,返回指向const char
的指针。
const
成员函数可以通过const
指针或对该类或派生类实例的引用来调用。
把()
不抛出异常
virtual
关键字是可选的(您可以跳过它或显式地写下它—没有区别),当您从基类重写一个已经虚方法时(就像本例中一样)。你关于两个const
关键词的评论几乎是正确的。