私は Ruby と Java のバックグラウンドを持ち、最近 C++ の探索を始めました。
例外クラスを単純にサブクラス化してカスタム例外を作成する最初の試みはあいまいに失敗しましたが、次の例がサイトに投稿されているのを見つけました。
class Exception : public exception
{
public:
Exception(string m="exception!") : msg(m) {}
~Exception() throw() {}
const char* what() const throw() { return msg.c_str(); }
private:
string msg;
};
C++ のセマンティクスに対する私の理解は、現時点ではあまり成熟していません。ここで何が起こっているのかをよりよく理解したいと思っています。
ステートメントconst char* what() const throw()
では、その部分は何をしますか? またconst throw()
、それはどのような種類のプログラミング構造ですか?
throw()
また、デストラクタ仕様の目的と意図は~Exception()
何ですか?特に何かをする必要はないのに、なぜデストラクタ仕様が必要なのですか? destructor
継承された例外で十分ではないでしょうか?