玩命加载中 . . .

14.2-输入和输出运算符


14.2 输入和输出运算符

类需要自定义IO操作的>>输入和<<输出运算符

14.2.1 重载输出运算符

  • 第一个参数是非常量的ostream对象的引用
  • 第二个参数是常量的类类型的引用
ostream& operator<<(ostream& os, const Sales_data& item) {
    os << item.isbn() << " " << item.units_sold << " " << item.revenue << " " << item.avg_price();
    return os;
}

通常,输出运算符不应该打印换行符

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

IO运算符通常需要读写类的非公有数据成员,所以一般声明为友元

14.2.2 重载输入运算符

  • 第一个形参是将要读取的流的引用
  • 第二个形参是将要读入到的非常量对象的引用
istream& operator>>(istream& is, Sales_data& item) {
    double price;
    is >> item.bookNo >> item.units_sold >> price;
    if (is)     // 检查输入是都成功
        item.revenue = item.units_sold * price;
    else        // 输入失败,赋予默认状态
        item = Sales_data();
    return is;
}
  • 输入运算符必须处理输入可能失败的情况,而输出运算符不需要
  • 当读取操作发生错误时,输入运算符应该从错误中恢复

文章作者: kunpeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kunpeng !
  目录