我正在阅读推荐的 C++ 书籍之一,它建议在复制分配部分;
即使将对象分配给自身,赋值运算符也能正确工作,这一点至关重要。这样做的一个好方法是在销毁左手操作数之前复制右手操作数。
书中的例子;类有一个数据成员ps
,并且ps is string *
C& operator=(const C &rhs)
{
auto newp = new string(*rhs.ps)
delete ps;
ps = newp;
return *this;
}
但我们的教练建议
C& operator=(const C &rhs)
{
if (this == &rhs)
return *this;
delete ps;
ps = new string(*rhs.ps)
return *this;
}
导师的做法有问题吗?