《C++ Primer 第5版》-14.2输入和输出运算符-康奈尔笔记

14.2.1重载输出运算符

  1. 输入和输出运算符
  2. 重载输出运算符<<
  3. 输出运算符尽量减少格式化操作
  4. 输入输出运算符必须是非成员函数

Ostream& operator<<(ostream&os, const Sales_data &item);

Sales_data data;

Data<<cout;// 若是成员

1. 输入和输出运算符

1)Io 库定义了用其读写内置类型的版本,而类需要自定义其对象的新版本

2. 重载输出运算符<<

1)第一个形参是非常量ostream对象的引用(因为会改变其状态,无法直接复制一个ostream)

2)第二个形参是一个常量的引用,打印的类型,引用是避免复制实参,打印不会改变对象内容

3. 输出运算符尽量减少格式化操作

1)让用户控制endl这些

4. 输入输出运算符必须是非成员函数

Data<<cout;//是不符合重载运算符的规则的,虽然可以,但是不好,所以需要为非成员函数,让第一个参数是cout,第二个参数是对象。

1)因为左侧运算对象是我们类的第一个对象

2)假设输入输出是某个类的成员,则他们也必须是istream或ostream的成员。

所以,我们希望为类自定义IO运算符,需要定义为非成员函数。

14.2.2重载输入运算符

  1. 重载输入运算符>>
  2. Sales_data的输入运算符
  3. 输入时的错误
  4. 标示错误

Istream&operator>>(istream&is,Sales_data &item);

1. 重载输入运算符>>

1)通常第一个形参是运算符要读取的流的引用

2)第二个形参是要读入到的非常量对象的引用,不是const

2. Sales_data的输入运算符

1)Note: 输入运算符可能有错,而输出运算符没有

3. 输入时的错误

1)类型不匹配

2)当达到文件末尾或遇到其它错误

3)可以等读取完一次性检查

Note:读取发生错误时,输入运算符应该负责从错误中恢复

4. 标示错误

1)Failbit,eofbit,badbit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘建杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值