我正在网上学习一门课程并且遇到了一些我不太确定我理解的语法。
#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;
在类声明的最后?
答案 0 :(得分:4)
这一行:
virtual const char* what() const throw()
表示what
是一个虚方法,它返回一个指向常量char
的指针(这意味着它可以用来返回一个字符串文字,或者通过以下方式获取的std :: string的内容)调用string :: c_str()函数)本身是常量,因此它不会修改任何类成员,也不会抛出任何异常。
这一行:
} myderivedexception;
创建名为derivedexception
的{{1}}类的实例。您可能不想这样做,而是抛出一个未命名的异常:
myderivedexception