运算符重载: 赋值运算符
2024年1月2日 2024年1月2日
必须重载为成员函数
接受同类型对象的三种赋值运算符重载
- 拷贝赋值运算符: 引用传递, 接受一个左值
- 移动赋值运算符: 引用传递, 接受一个右值
- 拷贝并移动赋值运算符: 值传递
接受花括号列表的赋值运算符
列表初始化
1T &operator=(initializer_list<Elem> il) 2{ 3 // process 4 return *this; 5}
举例
vector支持使用花括号列表进行赋值
1vector<string> v; 2v = {"a", "an", "the"};
示例
1StrVec &StrVec::operator=(initializer_list<string> il) 2{ 3 auto data = alloc_n_copy(il.begin(), il.end()); 4 free(); 5 elements = data.first; 6 first_free = cap = data.second; 7 return *this; 8}