2013-07-16 112 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 ::在異常字符串。只需谷歌爲它或看到here