2013-07-16 13 views
5

Sono abbastanza nuovo per C++ e ho trovato il seguente frammento di codice per un'eccezione personalizzata estesa da std :: exception. L'unica parte che non capisco è la : err_msg(msg) {} dopo la definizione del costruttore. Qualcuno può spiegare perché questo non è nelle parentesi graffe funzione?Sintassi C++ per classe di eccezione personalizzata

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

risposta

4

Il membro err_msg è già inizializzato dall'elenco di inizializzazione.

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

Quindi nulla da fare per il contructor.


edit:

C'è un sacco di discussione su non usare std :: string in eccezioni. Basta cercare Google o vedere here.

Problemi correlati