运算符重载 赋值运算符重载 取地址运算符重载
运算符重载:
关键字:operator
函数名:operator后面接需要重载的运算符符号
函数原型:返回值类型 operator操作符(参数列表)
.*、::、sizeof、?:、.
这五个运算符不可重载
赋值运算符:
1.参数类型:常引用的类的类型(const 类名 &形参名)
常:不要修改去赋值的对象的值;引用:提高效率
2.返回值:引用返回
为什么需要返回值?
为适应连续赋值的场景:a=b=c=d=…
a=b=c; ===> a.operator+(b.operator+(c));//若没有返回值a.operator+();传入的参数为空。
3.返回*this(当前对象)
4.若没有显示定义,系统会自动生成,按成员顺序拷贝
5.注意使用深/浅拷贝
取地址运算符重载:
类名 operator&()
{return this}
const 类名 operator&()const
{return this}