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 }
时间: 2025-01-02 12:13:02

C++学习基础八——重载输入和输出操作符的相关文章

通过重载输入和输出运算符实现复数的输入和输出

程序代码: #include <iostream> using namespace std; class Complex { public: Complex( )//定义默认构造函数初始化复数 { real=0; imag=0; } //使用初始化表初始化复数 Complex(double r, double i):real(r),imag(i){} Complex operator+(Complex &c2);//复数的加法 Complex operator-(Complex &am

linux学习之shell脚本 ------- 输入与输出

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 前面介绍了Shell脚本的基础和运算符等,今天再来看一下关于Shell脚本的输入与输出. Shell输入与输出的一些命令: echo read cat 管道 tee exec Shell输入与输出的一些概念: 文件重定向 标准输入.输出和错误 合并标准输出和标准错误 使用文件描述符 下面,我们挨个看每个命令的用法: 输入输出命令的用法: 1. echo 该命令的作用是可以显

Java I/O系统学习系列二:输入和输出

编程语言的I/O类库中常使用流这个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象.“流”屏蔽了实际的I/O设备中处理数据的细节. 在这个系列的第一篇文章:<<Java I/O系统学习系列一:File和RandomAccessFile>>中,我们讲到RandomAccessFile可以写入和读取文件,具备I/O功能,但是其只能针对文件,而I/O还涉及到很多其他场景比如网络.读取内存中的字符串等,所以Java类库中提供了一系列的类库来对其进行支持,也就是

14.2. 输入和输出操作符重载

#include<iostream> #include<string> using namespace std; class sales_item { friend istream& operator>>(istream &,sales_item&); friend ostream& operator<<(ostream&,const sales_item&); public: sales_item&

Shell编程基础教程3--Shell输入与输出

3.Shell输入与输出    3.1.echo        echo命令可以显示文本行或变量,或者把字符串输出到文件        echo [option] string            -e:解析转义字符            -n:回车不换行,linux系统默认回车换行            转义字符:\c,\f,\t,\n……        例子程序 #!/bin/bash #echo echo -e "This echo's 3 new lines\n\n\n" e

JavaScript学习 - 基础(八) - DOM 节点 添加/删除/修改/属性值操作

html代码: <!--添加/删除/修改 --> <div id="a1"> <button id="a2" onclick="add()">add</button> </div> <div id="a3"> <button onclick="del()">del</button> </div> &l

C++学习基础六——复制构造函数和赋值操作符

1.什么是复制构造函数 复制构造函数:是构造函数,其只有一个参数,参数类型是所属类的类型,且参数是一个const引用. 作用:将本类的成员变量赋值为引用形参的成员变量. 2.什么是赋值操作符 赋值操作符:返回值是本类的引用类型,参数类型是所属类的类型,且参数是一个const引用. 作用与复制构造函数相同. 其声明如下: 1 Sales_item& operator=(const Sales_item& rig); 3.什么情况下需要我们自己实现复制构造函数和赋值操作符? 一般情况下,C++

C++ Primer 学习笔记_59_重载操作符与转换 --输入/输出、算术/关系操作符

重载操作符与转换 --输入/输出.算术/关系操作符 支持I/O操作的类所提供的I/O操作接口,一般应该与标准库iostream为内置类型定义的接口相同,因此,许多类都需要重载输入和输出操作符. 一.输出操作符<<的重载 为了与IO标准库一致,操作符应接受ostream&作为第一个形参,对类类型const对象的引用作为第二个形参,并返回ostream形参的引用! ostream &operator<<(ostream &os,const ClassType &

java基础知识回顾之java Thread类学习(八)--java多线程通信等待唤醒机制经典应用(生产者消费者)

 *java多线程--等待唤醒机制:经典的体现"生产者和消费者模型 *对于此模型,应该明确以下几点: *1.生产者仅仅在仓库未满的时候生产,仓库满了则停止生产. *2.消费者仅仅在有产品的时候才能消费,仓空则等待. *3.当消费者发现仓储没有产品可消费的时候,会唤醒等待生产者生产. *4.生产者在生产出可以消费的产品的时候,应该通知等待的消费者去消费. 下面先介绍个简单的生产者消费者例子:本例只适用于两个线程,一个线程生产,一个线程负责消费. 生产一个资源,就得消费一个资源. 代码如下: pub