记录笔记原则:
1.用简单易懂的语言叙述自己的理解,避免照搬原文
2.用实例说明,避免空洞
3.多做总结和横向对比,避免片面
重载操作符的意义
直观;
代码简洁;
编译器默认重载的操作符
= & , && ||
成员 or 非成员实现
= [] () -> 必须为成员函数
+= -= *= 复合赋值 一般定义为成员函数
++ -- * 一般定义为成员函数
+ - == < > 算术、关系 一般为友元函数
输入输出操作符
一般为友元函数;
输入操作符必须处理错误和文件结束的情况;
ostream &operator<<(ostream &out, const A &obj);
istream &operator<<(istream &in, A &obj);
算术操作符
一般为友元函数;
一般返回右值;
A operator+(const A &obj1, const A &obj2);
A operator==(const A &obj1, const A &obj2);
下标操作符
必须定义成员函数;
一般返回引用;
int &operator[](const int i);
const int &operator[](const int i) const;
自增自减操作符
一般为友元函数;
前自增返回左值,后自增返回右值;
A &operator++(); // 前自增
A operator++(int); // 后自增