我刚刚发现了一些东西,我觉得这很奇怪。这不是很重要,但是却引起了我的好奇心。
假设您声明一个类:
class myException : public std::exception
{
/*do stuff*/
} myExep;
我只是注意到,无论何时抛出该异常,都需要根据使用
myException
还是myExep
进行不同的处理:try
{
if (/*whatever*/)
throw myException();
}
要么 :
try
{
if (/*whatever*/)
throw myExep;
}
我不明白为什么在一种情况下而不是其他情况下需要
()
。我将clang ++用作编译器,如果与之无关,则不知道。
我使用
-Wall -Werror -Wextra
标志。这并不是什么大不了的事,我只是想了解真正发生的事情。
最佳答案
class Foo {
...
} bar;
只是一种较短的写作方式
class Foo {
...
};
Foo bar;
您也可以使用以下语法,而无需为类型指定名称:
struct {
int x, y;
} p;
// p is an object with p.x and p.y fields
在您的示例中,
myException
是类型,而myExp
是(可能是全局)对象。关于c++ - C++:抛出异常怪异行为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38026517/