64,685
社区成员
发帖
与我相关
我的任务
分享
StrVec &StrVec::operator=(StrVec &&rhs) noexcept
{
// direct test for self-assignment
if (this != &rhs) {
//...
}
return *this;
}
op = (string const& source)
{
delete [] this.ptr;
this.ptr = new char [source.size];
copy(source.begin,source.end,this.ptr);
}
诚然,不需要检测对象是否相同也能正确工作的实现存在,但首先程序员得知道自己的算法可能有问题,然后他还得专门动东脑子琢磨一下怎么对付自赋值。靠正规教育教导程序员每时每刻防止自己犯类似错误显然是不现实的,最简单可行且能够大规模传播的方法就是直接避免自赋值。