c++ - const_cast vs static_cast -


To add const to a non-concrete object, which is the preferred method? const_cast & lt; T & gt; or static_cast & lt; T & gt; In a recent question, someone has mentioned that they prefer to use the static_cast , but I would have thought that the code const_cast is more obvious Will intend So what is the logic of using static_cast to create a variable const?

Start a const reference referenced to the object or not:

  T x; CONST T & amp; Xref (x); X.f (); // Call non-construction surcharge xref.f (); // call common overload  

or, use a implicit_cast function template like:

  T x; X.f (); // call non-present overload built-in_state & lt; Const T & amp; & Gt; (X) .f (); Looking at the choice between  static_cast  and  const_cast ,  static_cast  is definitely better: // call const overload  

const_cast should only be used for abandonment constness because it is the only artist who can do this, and in removing the console Naturally dangerous. Modifying the object through references obtained by removing the pointer or constellation can be undefined behavior.


Comments

Popular posts from this blog

Eclipse CDT variable colors in editor -

AJAX doesn't send POST query -

wpf - Custom Message Box Advice -