using namespace std;
struct MyException : public exception
{
const char * what () const throw () // <--- This
{
return "C++ Exception";
}
};
请考虑标记的行。 有人可以解释一下该声明中使用的语法
我想我应该把我的查询范围缩小到&#34; const throw()&#34; 仅部分......
感谢所有回复
答案 0 :(得分:5)
它是成员函数定义。
const char *
是返回类型,指向常量字符的指针,按惯例,是以零结尾的字符串数组的第一个字符。what
是函数名称()
是一个空参数列表,表示该函数不带参数const
限定了该功能,因此可以在const
对象上调用该功能,并且无法直接修改该对象的成员throw ()
是一个例外规范,可防止它抛出任何异常。这将覆盖exception
基类中声明的虚函数,允许您获取描述抛出的特定异常的文本消息:
try {
// Throw a specific type
throw MyException();
} catch (std::exception const & ex) {
// Catch a generic type and extract the message
std::cerr << ex.what() << '\n'; // prints "C++ Exception"
}
答案 1 :(得分:1)
该行是类MyException
的成员函数声明。它遵循与任何其他函数声明完全相同的语法。
const char *
- 是函数的返回类型。
what
- 是函数的名称。
()
- (空)参数列表。该方法不带参数。
const
- 声明这是一个const函数(一般来说,这意味着它不应该改变对象的状态)。
throw ()
- 声明该函数不会抛出异常。
答案 2 :(得分:0)
what
是一个返回const char *
的函数。它也是一个从不抛出异常的函数。
答案 3 :(得分:0)
using namespace std;
struct MyException : public exception
{
const char * what () const throw () // <--- This
{
return "C++ Exception";
}
};
从您的问题中不清楚您不确定哪一点,但我猜它是throw()
,因为这不常用。
这用于记录方法可以抛出的异常类型,这使编译器能够检查:
其余部分是相当标准的:
const char * what () const throw ()
what()
:一个名为what。
what() const
:what()是一个const函数,因此它可以用于MyException
类型的const对象
const char* what() const
:什么是const函数,它返回指向const char