重载输出运算符
通常情况下,第一个形参为非常量ostream对象的引用,非常量因为对象会修改,引用因为ostream对象不能拷贝;第二个形参通常为常量的引用,常量为要打印的类类型,引用因为我们不想拷贝实参,常量因为我们只是打印不改变原数据;最后返回ostream形参。
ostream &operator<<(ostream &os, const Sales_data &item) { os<< item.isbn() << "" << ... << endl; return os; }
输入输出运算符必须是非成员函数,一般被声明为友元
重载输入运算符
通常情况下,第一个形参为流的引用,第二个形参为读入的非常量对象的引用
istream &operator>>(istream &is, Sales_data &item) { double price; is >> item.bookNo >> price; if(is) item.revenue = item.units_sold * price; else item = Sales_data(); return is; }