using namespace std;
struct MyException : public exception
{
const char * what() const throw() // <--- This
{
return "C++ Exception";
}
};
請考慮標出的行。 有人可以解釋我的這種說法解釋給什麼()打電話
我想我應該有我的查詢範圍縮小到使用的語法「常量擲()」部分只有...
感謝所有的答覆
using namespace std;
struct MyException : public exception
{
const char * what() const throw() // <--- This
{
return "C++ Exception";
}
};
請考慮標出的行。 有人可以解釋我的這種說法解釋給什麼()打電話
我想我應該有我的查詢範圍縮小到使用的語法「常量擲()」部分只有...
感謝所有的答覆
這是一個成員函數的定義。
const char *
是返回類型,一個指針到一個恆定字符,按照慣例一個0結尾的字符串數組的第一個字符。what
是函數名()
是一個空的參數列表,表明該函數沒有參數const
資格的功能,所以它可以在const
對象上調用,不能直接修改對象的成員throw()
是一個異常規範,它可以防止它拋出任何異常。這將覆蓋在exception
基類中聲明的虛擬功能,讓你得到一個短信描述拋出的特定異常:
try {
// Throw a specific type
throw MyException();
} catch (std::exception const & ex) {
// Catch a generic type and extract the message
std::cerr << ex.what() << '\n'; // prints "C++ Exception"
}
我必須指出,它實際上並不能防止拋出異常。 'throw()'變體(現在不推薦使用)表明不會拋出任何異常,因此編譯器可以簡化代碼省略異常處理部分。但是,如果拋出異常,可能會導致程序進入不一致狀態,因爲沒有執行適當的清理。 – VTT
what
是返回const char *
的函數。 也不會引發異常。
該行是類MyException
的成員函數聲明。它遵循與任何其他函數聲明完全相同的語法。
const char *
- 函數的返回類型。
what
- 是函數的名稱。
()
- (空)參數列表。該方法不帶參數。
const
- 聲明這是一個const函數(通常,這意味着它不應該改變對象的狀態)。
throw()
- 聲明函數不會引發異常。
using namespace std;
struct MyException : public exception
{
const char * what() const throw() // <--- This
{
return "C++ Exception";
}
};
它是不是從你清楚問題,特別是你不確定哪一點,但我想這是throw()
,因爲這不常用。
這是用來記錄的異常類型的方法可以拋出,從而使編譯器檢查:
行的其餘部分是相當標準:
const char * what() const throw()
what()
:一個名爲what的函數。
what() const
:什麼()是一個const功能,因此可以在類型MyException
const char* what() const
的const對象使用:什麼是const函數,它返回一個指向const char
你的標題很模糊和貧窮。請更改它以描述您所提及的特定語法,以便標題描述該問題。你還應該證明你已經完成了一些基礎研究。你正在使用哪本書? –
你認爲我應該刪除這個問題嗎? –
@Tri_Core你應該解答這個問題,以便清楚你在問什麼。你已經添加了文字說:「我認爲我應該已經把我的查詢限制在只有const throw()部分」 - 不要添加該文本,只是_do it_,即縮小查詢範圍。 – davmac