运算符重载
重载运算基本规则
任意重载运算符都至少有一个作用对象是类的成员或类类型,不能全是内置类型,否则重载无意义。
重载运算符如果定义为成员函数,左侧作用对象必须是类的成员或类类型。
非成员函数重载
输入输出运算符
输入输出的重载函数必须是非成员函数。
输入函数必须处理可能的失败情况,输出函数则不需要。
算术和关系运算符
一开始写过,一般也是非成员函数。
如果同时定义算术运算符和复合赋值运算符,在定义算术运算符时通常用到复合赋值运算符。
如果定义了==,不要轻易定义>或<,容易在逻辑上不一致。
成员函数重载
必须定义为成员的运算符
- 赋值运算符
- 下标运算符
- 箭头运算符
- 函数调用运算符
通常定义为成员的运算符
- 复合赋值运算符
- 递增递减运算符
- 解引用运算符
特殊运算符的实现
下标运算符
下标运算符区分const。
递增递减运算符
递增递减运算符要区分前置后置。
箭头运算符
对箭头运算符的重载必须返回一个指针或一另一个重载了->的类对象。
直接返回指针的情况。
返回另一个重载了->的类对象的情况。
函数调用运算符
重载函数调用运算符,把类对象当成函数使用(可调用对象)。
评论