5

我对 C++ 相当陌生,并且发现了以下代码片段,用于从 std::exception 扩展的自定义异常。我不明白的唯一部分是: err_msg(msg) {}构造函数定义之后。谁能解释为什么这不在函数大括号中?

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

1 回答 1

4

该成员err_msg已由初始化列表初始化。

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

因此,对于承包商而言,无事可做。


旁注:有一些关于不在异常中使用 std::string 的讨论。只是谷歌它或看到这里

于 2013-07-16T15:55:37.360 回答