2013-07-16 11 views
5

Ich bin ziemlich neu in C++ und habe das folgende Code-Snippet für eine benutzerdefinierte Ausnahme von STD :: Ausnahme gefunden. Der einzige Teil, den ich nicht verstehe, ist der : err_msg(msg) {} nach der Konstruktordefinition. Kann jemand erklären, warum dies nicht in der Funktion Klammern ist?C++ - Syntax für benutzerdefinierte Ausnahmeklasse

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

Antwort

4

Das Mitglied err_msg wird bereits von der Initialisierungsliste initialisiert.

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

Also nichts für den contructor zu tun.


edit:

Es gibt eine Menge Diskussion geht es um nicht mit std :: string in Ausnahmen. Einfach googeln oder sehen here.

Verwandte Themen