Using the Const_cast Operator

Using the Const_cast Operator

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.


Share the Post: