簡體   English   中英

C ++:拋出異常怪異行為?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM