C++操作符重载

C++操作符重载
      在C++中有时候我们需要下列这样的操作:
      #include<iostream>
      using namespace std;
      class a
      {
           public:
           int x,y;
           a(int i,int j){x=i,y=j;}
      };
      int main()
      { 
           a p;
           cout<<p->x<<p->y<<end;
           return 0;
      }
      运行后就会发现,程序会报错,意思是操作符<<不支持这样的输出操作,这时候就要使用运算符重载来从新定义<<操作符了,可以像下面这样从新定义cout操作符:
      ostream  &operator <<(ostream  &b,const a &q)
      {
          b<<q.x;//b代表cout的别名,q代表类a对象的别名;
          b<<q.y;
          return b;//返回值为b,这是cout的别名,这样做的目的是为了重载,例如我们这样定义以后就可以像下面这样使                           用,cout<<p.x<<p.y<<endl;
      }
这样定义以后我们就可以完成上面的cout<<p->x<<p->y<<endl;这样的操作了;
       同时我们注意到,上面我们访问的数据都是共有的,假如我们想像上面的方式访问类的私有成员,那我们可以可以使用友元关键字将从新定义<<的重载。就像下面这样:friend ostream  &operator <<(ostream  &b,const a &q);经过这样的声明定义以后,ostream的对象cout就可以以朋友的身份来访问类的私有成员了。
        
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值