使用复制和交换方法时,我对赋值运算符有疑问。
String & operator = (String s) // the pass-by-value parameter serves as a temporary
{
s.swap (*this); // Non-throwing swap
return *this;
}// Old resources released when destructor of s is called.
假设我们有一个很好的复制构造函数,它可以深度复制所有指针和动态分配的变量。
那么,上面的代码和下面的代码有什么区别呢?
String & operator = (String s) // the pass-by-value parameter serves as a temporary
{
return s;
}
由于我们有一个很好的复制构造函数,我认为另一个对象 s 是在 operator= 函数中创建的。那么,使用非抛出交换功能有什么意义呢?