C ++异常类扩展语法

时间:2018-03-18 18:07:35

标签: c++

我正在网上学习一门课程并且遇到了一些我不太确定我理解的语法。

    #include <iostream>
    #include <exception>

    using namespace std;

    class derivedexception: public exception {
          virtual const char* what() const throw() {
            return "My derived exception";
  }        
    } myderivedexception;

    int main() {
          try {
            throw myderivedexception;
          }
          catch (exception& e) {
            cout << e.what() << '\n';
          }
    }

我的问题是:

    virtual const char* what() const throw() 

这条线是什么意思?

也是,

是什么
    } myderivedexception;

在类声明的最后?

1 个答案:

答案 0 :(得分:4)

这一行:

  virtual const char* what() const throw() 

表示what是一个虚方法,它返回一个指向常量char的指针(这意味着它可以用来返回一个字符串文字,或者通过以下方式获取的std :: string的内容)调用string :: c_str()函数)本身是常量,因此它不会修改任何类成员,也不会抛出任何异常。

这一行:

   } myderivedexception;

创建名为derivedexception的{​​{1}}类的实例。您可能不想这样做,而是抛出一个未命名的异常:

myderivedexception