1、当一个重载的运算符是成员函数时,this绑定到左侧运算对象。不能重载内置类型的运算符。
2、只能重载已有的运算符,无权发明新的运算符号。
3、通常情况下,不应该重载逗号、取地址、逻辑与和逻辑或运算符。
4、重载运算符应该定义为成员还是非成员函数:
(1)、赋值、下标、调用和成员访问箭头运算符,必须是成员。
(2)、赋值运算符一般来说是成员,但非必须。
(3)、改变对象状态的运算符或者与给定类型密切相关的运算符,例如递增、递减和解引用通常是成员函数。
(4)具有对称性的运算符可能转换任意一端的运算对象,例如算术、相等性、关系和位运算符等,因此它们通常应该是普通的非成员函数。
5、输入输出运算符必须是非成员函数。
6、输入运算符必须能处理输入可能失败的情况,输出运算符则不需要。
7、定义前置递增和递减运算符应该返回递增或递减后的引用。
8、定义后置递增和递减运算符接受一个额外的int类型形参。
9、重载的箭头运算符必须返回类的指针或者自定义了箭头运算符的某个类的对象。
10、如果类定义了调用运算符,则该类的对象称为函数对象。
11、lamda表达式:编译器会将其翻译为一个未命名类的未命名对象。
12、转换构造函数和类型转换运算符共同定义了类类型转换。
13、类型转换运算符既没有显示的返回类型,也没有形参,而且必须定义成类的成员函数。类型转换运算符通常不应该改变转换对象的内容,因此一般被定义为const成员函数。
14、通常情况下,不要为类定义相同的类型转换,不要在类中定义两个及两个以上转换源或转换目标是算术类型的转换。