2013-07-16 13 views
5

Jestem dość nowa w C++ i znalazłem następujący fragment kodu dla niestandardowego wyjątku rozszerzonego ze std :: exception. Jedyna część, której nie rozumiem, to : err_msg(msg) {} po definicji konstruktora. Czy ktoś może wyjaśnić, dlaczego tak nie jest w nawiasach klamrowych?Składnia C++ dla niestandardowej klasy wyjątków

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(); }; 
}; 

Odpowiedz

4

Użytkownik err_msg jest już zainicjalizowany przez listę inicjalizacji.

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

Nic nie można zrobić dla contructor.


edit:

Istnieje wiele dyskusji na temat nie używając std :: string wyjątków. Wystarczy google dla niego lub zobacz here.

Powiązane problemy