![](/img/trans.png)
[英]looser throw specifier for ‘virtual const char* ro_err::StdErr::what() const’
[英]What is the meaning of this header (virtual const char* what() const throw())?
class myexception: public exception
{
virtual const char* what() const throw()
{
return "My exception happened";
}
};
抱歉,這個問題聽起來很愚蠢,但我在解析標題時遇到了麻煩。 有人可以用英語描述標題的實際含義嗎? 在我看來,第一件事是關鍵字virtual
。 myexception
類不是基類,而是繼承myexception
實現的exception
類,那么為什么在這里使用virtual
? 我猜想const
是用於返回類型的,它是一個c樣式的字符串,它是const,另一個const
是要確保此對象不能被修改(沒人可以告訴我該對象可能是什么?)。 我不知道throw()
到底能做什么,以前從未見過這種語法。
虛擬
不添加任何內容,因為要覆蓋的方法已經是虛擬的。 您是正確的:可以省略。
const char * what()
一個名為what()
成員函數,該成員函數不帶參數,並且返回指向const char
的指針。
const
可以通過const
指針或對該類或派生類的實例的引用來調用成員函數。
扔()
不拋出異常。
當您從基類覆蓋已經虛擬的方法時(例如在這種情況下), virtual
關鍵字是可選的(您可以跳過它或顯式地寫下-沒有區別)。 您對兩個const
關鍵字的評論幾乎是正確的。 這是基本的C ++。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.