输入和输出运算符重载

输入和输出运算符重载

重载输出运算符 <<

通常情况下,输出运算符的第一个形参是一个非常量 ostream 对象的引用。之所以 ostream 是非常量是因为向流写入内容会改变其状态;而该形参是引用是因为我们无法直接复制一个 ostream 对象。
第二个形参一般来说是一个常量的引用,该常量是我们想要打印的类类型。
为了与其他输出运算符保持一致,poerator<< 一般要返回它的 ostream 形参。
与 iostream 标准库兼容的输入输出运算符必须是普通的非成员函数,而不能是类的成员函数。否则,它们的左侧运算对象将是我们的类的一个对象。
Demo demo;
demo << cout; //如果 operator<< 是 Demo 的成员

IO运算符一般被声明为友元

示例代码:

class Demo
{
public:
    Demo(const int &n, const string &str) : id(n), name(str) { };
    friend ostream &operator<< (ostream &os, const Demo &demo);
private:
    int id;
    string name;
};

ostream &operator<< (ostream &os, const Demo &demo)
{
    os << demo.id << "  " << demo.name << endl;
    return os;
}

void main()
{
    Demo demo(1, "zhoujianyu");
    cout << demo << endl;
}
重载输入运算符

第一个参数是运算符将要读取的流的引用;
第二个参数是将要读入到的(非常量)对象的引用
示例代码:

     istream &operator>> (istream &is, Demo &demo)
     {
         is >> demo.id >> demo.name;
         if (is)        //检查是否插入失败
            ;
         else
            demo = Demo();

         return is;
     }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值