zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    An introduction to parsing text in Haskell with Parsec
    Kafka and ZooKeeper
    Kotlin + Anko for Android
    LibGDX
    OpenCV
    大中型网站技术实践系列
    Go by Example
    Benchmarks for the Top Server-Side Swift Frameworks vs. Node.js
    The Languages and Frameworks You Should Learn in 2017
    RabbitMQ
  • 原文地址:https://www.cnblogs.com/calence/p/5858398.html
Copyright © 2011-2022 走看看