13.6 拷贝赋值运算符:可以看作一个名为operator=的成员函数,接受一个与其所在类相同类型的参数,返回一个指向其左侧运算对象的引用。
何时使用:对类对象进行赋值操作时使用;
进行的操作:将右侧运算对象的每个非static成员赋予左侧运算对象的对应成员;
当一个类未定义自己的拷贝赋值运算符时,编译器会生成合成拷贝运算符。
13.7 对于StrBlob类,用shared_ptr的拷贝赋值运算符对data成员进行赋值(引用计数加1);
对于StrBlobPtr类,用weak_ptr的拷贝赋值运算符对wptr成员赋值(引用计数不变),对curr成员直接赋值。
13.8 HasPtr类的拷贝赋值运算符:
HasPtr&
HasPtr::operator=(const Hasptr &rhs)
{
auto tmp = new string(*rhs.ps);
delete ps; //销毁原来的string
ps = tmp; //指向新string
i = rhs.i;
return *this;
}