class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
};
抱歉,这个问题可能听起来很愚蠢,但我在解析标题时遇到了问题。有人能用英语描述标题的实际含义吗?关键词virtual
对我来说似乎很奇怪。 myexception
类不是基类,并且继承自已实现的exception
类,为什么在这里使用virtual
?我猜const
是返回类型,它是一个c风格的字符串是const,而另一个const
是为了确保这个对象不能被修改(有人能告诉我那是什么)对象可能是?)。我不知道throw()
究竟做了什么,之前从未见过这种语法。
答案 0 :(得分:29)
虚拟
什么都不添加,因为被覆盖的方法已经是虚拟的。你是对的:它可以省略。
const char * what()
名为what()
的成员函数,它不接受任何参数并返回指向const char
的指针。
常量
可以通过const
指针或对此类实例或派生类的引用来调用成员函数。
掷()
没有例外。
答案 1 :(得分:0)
当您从基类覆盖已经虚拟的方法时,virtual
关键字是可选的(您可以跳过它或显式写下来 - 没有区别)(就像在这种情况下一样)。您对这两个const
关键字的评论几乎是正确的。它是基本的C ++。