Class::DPrivate::~DPrivate(){delete d;}\
Class::DPrivate Class::DPrivate::clone()const{DPrivate r;*(r.d)=*d;return r;}\
Class::DPrivate& Class::DPrivate::operator=(const Class::DPrivate&dp)\
- {*d=*(dp.d);return *this;}
+ {if(d!=dp.d)*d=*(dp.d);return *this;}
Class::DPrivate::~DPrivate(){d->detach();}\
Class::DPrivate Class::DPrivate::clone()const{DPrivate r;*(r.d)=*d;return r;}\
Class::DPrivate& Class::DPrivate::operator=(const DPrivate&dp)\
- {d->detach();d=dp.d;d->attach();return *this;}
+ {if(d!=dp.d){d->detach();d=dp.d;d->attach();}return *this;}