[英]C++ : Throw Exception weird behavior?
我剛剛發現了一些東西,我覺得這很奇怪。 這不是很重要,但是卻引起了我的好奇心。
假設您聲明一個類:
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
是(可能是全局)對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.