我们在一个类里面重载赋值运算符的时候,有:
拷贝赋值运算符,移动赋值运算符,以initializer_list为参数的赋值运算符,复合赋值运算符。
复合赋值运算符不得非要是类的成员,不过我们倾向于将所有的赋值运算符包含在类的内部。
拷贝赋值运算符,移动赋值运算符 要考虑自赋值情况。
以initializer_list为参数的赋值运算符
strvec & strvec::operator=(std::initializer_list<int>il)
{
auto = alloc_n_copy(il.begin(),il.end());alloc_n_copy 返回一个pair,我们之前定义过
free();//释放自身空间
elements = data.first;
first_free = cap = data.second;
return *this;
}//initializer_list为参的赋值运算符无须检查对象是否是自身。