2013-07-16 7 views
5

私はC++をかなり新しくしており、std :: exceptionから拡張されたカスタム例外の次のコードスニペットが見つかりました。私が理解できない部分は、コンストラクタ定義の後の: err_msg(msg) {}です。なぜこれが関数の中括弧にないのか説明できますか?カスタム例外クラスのC++構文

class my_exception : public std::exception { 
    private: 
    std::string err_msg; 

    public: 
    my_exception(const char *msg) : err_msg(msg) {}; 
    ~my_exception() throw() {}; 
    const char *what() const throw() { return this->err_msg.c_str(); }; 
}; 

答えて

4

メンバerr_msgは、初期化リストによって既に初期化されています。

my_exception(const char *msg) : err_msg(msg) {}; 
//       here ^^^^^^^^^^^^ 

コンストラクタでは何もしません。


編集:

例外でのstd ::文字列を使用していないについて多くの議論があります。それのためだけにGoogleまたはhereを参照してください。

関連する問題