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