如果我創建一個結構:C++虛方法
struct joinpoint_exception: exception
{
virtual const char* what() const throw();
};
什麼what() const throw()
意味着在這種情況下?
如果我創建一個結構:C++虛方法
struct joinpoint_exception: exception
{
virtual const char* what() const throw();
};
什麼what() const throw()
意味着在這種情況下?
what
是一個虛擬成員函數,返回一個指向常量char
的指針,該指針本身是常量並且什麼都不拋出。
virtual const char* what() const throw();
|-----| <- virtual member function
|---------| <- returning a pointer to constant chars
|-----| <- named what
|---| <- which is constant
|-------| <- which does not throw
(技術上的功能仍然可以拋出,但如果這樣做,直接進入std::unexpected
,默認調用std::terminate
)
這意味着what()
是const
(即它不會修改對象的邏輯狀態),並且它不會拋出任何異常(如throw()
所示)。
what
是方法的名稱
const
意味着該方法不會改變任何內部的數據,除非其mutable
throw()
意味着該方法不應該拋出一個異常,如果它確實std::unexpected
改爲拋出
對於'const',這是不正確的。該方法仍然可以修改'mutable'成員。對於'扔',這也是不正確的。該函數仍然可以拋出,儘管任何嘗試這樣做都會調用'std :: unexpected'。 –
@比利:謝謝你的澄清。我從不使用mutalbe,如果一個方法是const,它的const對我來說:-) std :: unexpected對我來說是新的 –