2014-04-12 56 views
0

我編碼我自己的異常類:從性病繼承:: runtime_error

class Exception : public std::runtime_error{ 

} 

而且我想超載what()。我怎樣才能做到這一點?

另外,從std::runtime_error繼承時,需要注意什麼?

+1

如果你想有一個邏輯錯誤你會做什麼? –

+0

你的意思是*超載*或*重寫*? – milleniumbug

回答

1

我認爲,作爲runtime_error的一部分,我相信它是虛擬的,所以要重載它,你需要創建一個方法完全相同的方法簽名。所以,如果你的瀏覽器指向:http://www.cplusplus.com/reference/exception/exception/,然後你會看到什麼()

所以超載是你需要做這樣的事情在你的頭文件中的定義:

class Exception : public runtime_error 
{ 
    public: 
     const char* what() const throw(); 
} 

然後你會在你的CPP文件中這樣定義它:

const char* Exception::what() const throw() 
{ 
    // do stuff 
} 

希望它可以幫助...

+0

謝謝!它非常有幫助。但是,這意味着什麼:const throw();之後const char * what() – user3487199

+0

樂意幫忙,請不要忘記點擊勾號接受答案。 – Welshboy

+1

@ user3487199:const表示what()不修改對象,throw()表示它不拋出。 –