gpt4 book ai didi

C++ : Throw Exception weird behavior?

转载 作者:行者123 更新时间:2023-11-27 22:50:14 25 4
gpt4 key购买 nike

我刚刚注意到一件事,我觉得这很奇怪。这不是很重要,但它引起了我的好奇心。

假设你声明了一个类:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com