这个头的含义是什么(virtual const char * what()const throw())?

时间:2014-03-18 23:33:01

标签: c++ exception

class myexception: public exception
{
  virtual const char* what() const throw()
  {
    return "My exception happened";
  }
};

抱歉,这个问题可能听起来很愚蠢,但我在解析标题时遇到了问题。有人能用英语描述标题的实际含义吗?关键词virtual对我来说似乎很奇怪。 myexception类不是基类,并且继承自已实现的exception类,为什么在这里使用virtual?我猜const是返回类型,它是一个c风格的字符串是const,而另一个const是为了确保这个对象不能被修改(有人能告诉我那是什么)对象可能是?)。我不知道throw()究竟做了什么,之前从未见过这种语法。

2 个答案:

答案 0 :(得分:29)

  

虚拟

什么都不添加,因为被覆盖的方法已经是虚拟的。你是对的:它可以省略。

  

const char * what()

名为what()的成员函数,它不接受任何参数并返回指向const char的指针。

  

常量

可以通过const指针或对此类实例或派生类的引用来调用成员函数。

  

掷()

没有例外。

答案 1 :(得分:0)

当您从基类覆盖已经虚拟的方法时,virtual关键字是可选的(您可以跳过它或显式写下来 - 没有区别)(就像在这种情况下一样)。您对这两个const关键字的评论几乎是正确的。它是基本的C ++。