我刚刚注意到一件事,我觉得这很奇怪。这不是很重要,但它引起了我的好奇心。
假设你声明了一个类:
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++ : Throw Exception weird behavior?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38026517/