std::exception最近、すべての例外の基本クラスとして使用し始めました。キーワードを前にwhat()置かないと、適切にオーバーライドできませんでした。キーワードがvirtualないと、常に基本クラスの関数を呼び出すように見えました。virtualwhat()std::exception
virtual関数をオーバーライドするときに関数の前に置く必要はないと思っていたので、少し当惑しました(そして、それを確認するように見える投稿があります)。しかし、私はそれを手放して先に進むことにしました。
それから今日、O'Reilly の "Safe C++" を読んでいるときに、著者もwhat()virtual キーワードでオーバーライドしているのを見つけました。彼が書きました...
virtual const char* what() const throw () { /* stuff */ }
なぜ彼は関数をオーバーライドしてvirtualキーワードを使用しているのですか? 上で引用した投稿で提案されているように、それは「ドキュメント」のためだけですか?