实现copy assignment operator
为何需要? :::info 默认情况下将某个类对象赋值给另一个类对象,会执行默认的成员逐一复制 ::: 但是若是对象在堆区开辟了空间,那么则需要自定义copy assignment operator
Class Matrix{public:Matrix(int nums);~Matrix(){delete[] ptr;}private:int* ptr;int _nums;};Matirx::Matrix(int nums){this->_nums=numsthis->ptr=new int[nums];}Matrix& Matrix::operator=(Matrix &rhs){if(this!=&rhs){_nums=rhs._nums;delete [] ptr;ptr=new int[_nums];for(int i=0;i<nums;i++){ptr[i]=rhs.ptr[i];}}return *this;}
实现一个function object
:::info
函数对象又叫仿函数/谓词
实际上是一个对象, 他的类对小括号运算符做了重载,因此可像调用函数一样使用他
:::
bool LessThan::operator()(int val)const{return val>xxx;}//----------------------------------------------Lessthan lt;find_if(it,it_end,lt);//找到比xxx小的
小结
- 类似赋值时的操作, 对于拷贝运算符有时也需要重构(深拷贝和浅拷贝的区别)
- 可以重载类中的()运算符, 使得对象能够起到函数的效果; 即为仿函数/函数对象/谓词;
