C++学习基础八——重载输入和输出操作符
一、重载输入操作符的要点:
1、返回值为istream &。
2、第一个参数为istream &in。
3、第二个参数为自定义类型的引用对象(例如Sales_Item &item)。
二、重载输出操作符的要点:
1、返回值为ostream &。
2、第一个参数为ostream &。
3、第二个参数为自定义类的引用对象(例如const Sales_Item &item)。
三、代码片段如下:
1 class Sales_Item 2 { 3 //注意:形参为引用时,实参和形参才指向共同的对象,否则修改形参的数据不影响实参。 4 friend ostream &operator<< (ostream &out,const Sales_Item &item); 5 friend istream &operator >> (istream &in,Sales_Item & item); 6 public : 7 Sales_Item() 8 { 9 count = 0; 10 price = 0; 11 } 12 Sales_Item(string &book,int number,double unit) 13 { 14 isbn = book; 15 count = number; 16 price = unit * number; 17 } 18 19 private: 20 string isbn; 21 int count; 22 double price; 23 }; 24 25 ostream &operator<< (ostream &out,const Sales_Item &item) 26 { 27 out<<item.isbn<<" , "<<item.count<<" , "<<item.price<<endl; 28 return out; 29 } 30 31 istream &operator>> (istream &in,Sales_Item &item) 32 { 33 double price; 34 in >> item.isbn >> item.count >> price; 35 if(in) 36 { 37 item.price = price * item.count; 38 } 39 else 40 { 41 item = Sales_Item(); 42 } 43 44 return in; 45 } 46 int main() 47 { 48 string s("0-123-12345-X"); 49 Sales_Item item(s,10,12.00); 50 cout<<item<<endl; 51 52 cin>>item; 53 cout<<item<<endl; 54 cout<<"ok"<<endl; 55 return 0; 56 }