November 1999
Intermediate to advanced
240 pages
5h 22m
English
Difficulty: 6
Following from Item 40, this issue considers a C++ idiom that's frequently recommended—but 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;
}
What legitimate goal does it try to achieve? Correct any coding flaws in this version.
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.)