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

What is the meaning of this header (virtual const char* what() const throw())?

本文关键字:const throw 是什么 函数 virtual char What      更新时间:2023-10-16
class myexception: public exception
{
  virtual const char* what() const throw()
  {
    return "My exception happened";
  }
};

对不起,这个问题可能听起来很愚蠢,但是我在解析标题时遇到了麻烦。有人能用英语描述一下标题的真正含义吗?对我来说,第一件奇怪的事情是关键词virtualmyexception类不是基类,继承自已经实现的exception类,那么为什么在这里使用virtual呢?我猜const是为返回类型,这是一个c风格的字符串,是const,和其他const是确保没有这个对象不能被修改(有人能告诉我这个对象可以是什么?)。我不知道throw()到底做了什么,以前从未见过这种语法。

虚拟

不添加任何内容,因为被覆盖的方法已经是虚方法。你是对的,可以省略。

const char* what()

成员函数what(),不带实参,返回指向const char的指针。

const

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

把()

不抛出异常

virtual关键字是可选的(您可以跳过它或显式地写下它—没有区别),当您从基类重写一个已经虚方法时(就像本例中一样)。你关于两个const关键词的评论几乎是正确的。