运算符重载之——输入和输出操作符

一:输出操作符
#include<iostream>
using namespace std;
class String
{
	friend ostream& operator<<(ostream& os,const ClassType &object);
	os<<object;
	return os;
}
第一个形参是对 ostream 对象的引用,在该对象上将产生输出。ostream 为非 const,因为写入到流会改变流的状态。该形参是一个引用,因为不能复制ostream 对象。
第二个形参一般应是对要输出的类类型的引用。该形参是一个引用以避免复制实参。它可以是 const,因为(一般而言)输出一个对象不应该改变对象。使形参成为 const 引用,就可以使用同一个定义来输出 const 和非 const 对象。
返回类型是一个 ostream 引用,它的值通常是输出操作符所操作的ostream 对象。
注意:
一般而言,输出操作符应输出对象的内容,进行最小限度的格式化,它们不应该输出换行符。
尽量减少操作符所做格式化,让用户自己控制输出细节。
当定义符合标准库 iostream 规范的输入或输出操作符的时候,必须使它成为非成员操作符。因此类通常将 IO操作符设为友元。
二:输入操作符
class String
{
	friend istream&operator>>(istream& in, Sales_item& s)
	{
	in>>....;
	return in;
	}
};

与输出操作符类似,输入操作符的第一个形参是一个引用,指向它要读的流,并且返回的也是对同一个流的引用。它的第二个形参是对要读入的对象的非const 引用,该形参必须为非 const,因为输入操作符的目的是将数据读到这个对象中。
更重要但通常重视不够的是,输入和输出操作符有如下区别:输入操作符必须处理错误和文件结束的可能性。
输入期间可能的错误
1. 任何读操作都可能因为提供的值不正确而失败。(如果出现了错误,我们不用关心是哪个输入失败了,相反,我们将整个对象复位)
2. 任何读入都可能碰到输入流中的文件结束或其他一些错误。
设计输入操作符时,如果可能,要确定错误恢复措施,这很重要。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值