virtual const char* what() const throw()
{
}
AFAIK it\'s a function that will return a constant pointer to a mutable char. The rest I am not sure.
Concerning the const after the functions: there are really two meanings, what the compiler understands, and what the usual programming conventions make it mean. As far as the compiler is concerned, all it does is make the this pointer a pointer to const. The const can be cast away, or various indirections used, to modify the observable state of the object. In the end, this const means whatever the programmer wants it to mean.
The usual convention, today, is that it means that the observable state of the object will not change. For some reasonable definition of "observable state".
Concerning the exception specification: an empty exception specification is a no throw guarantee, and is very important when considering exception safety. The next version of the standard has deprecated exception specifications, but it does provide some other means of specifying that a function will never throw.