I l@ve RuBoard Previous Section Next Section

Item 41. Object Lifetimes桺art 2

Difficulty: 6

Following from Item 40, this issue considers a C++ idiom that's frequently recommended梑ut often dangerously wrong.

Critique the following "anti-idiom" (shown as commonly presented).



T& T::operator=( const T& other ) 


{


  if( this != &other )


  {


    this->~T();


    new (this) T(other);


  }


  return *this;


}


  1. What legitimate goal does it try to achieve? Correct any coding flaws in this version.

  2. Even with any flaws corrected, is this idiom safe? Explain. If not, how else should the programmer achieve the intended results?

(See also Item 40.)

    I l@ve RuBoard Previous Section Next Section