0、定义重载的运算符是,必须首先决定是将其声明为类的成员函数还是非成员函数
1、算术、相等性、关系、位运算、输入输出等的重载应该定义成非成员函数
2、重载输出运算符的第一个形参是一个非常量(向流写入内容会改变其状态)ostream对象的引用(无法复制ostream对象),第二个形参是该类的常量(避免修改)引用(避免复制),返回ostream形参(与其它输出运算符保持一致)
3、重载输入运算符的第一个形参是一个非常量(向流写入内容会改变其状态)istream对象的引用(无法复制istream对象),第二个形参是该类的非常量(可以修改)引用(避免复制),返回istream形参(与其它输出运算符保持一致)
4、IO运算符通常需要读写类的非公有数据成员,所以一般被声明为类的友元
5、输入运算符必须处理输入可能失败的情况,而输出运算符不需要