The const_cast operator takes the form:
const_cast (expr)
It is used to add or remove the “const-ness” or “volatile-ness” from a type. Consider a function, f, which takes a non-const argument:
double f( double& d );
Say you wish to call f from another function g:
void g (const double& d) { val = f(d); }
Because d is const and should not be modified, the compiler will complain because f may potentially modify its value. To get around this dilemma, use a const_cast:
void g (const double& d) { val = f(const_cast(d)); }
This strips away the “const-ness” of d before passing it to f. You cannot use const_cast for any other types of casts, such as casting a base class pointer to a derived class pointer. If you do so, the compiler will report an error.