zoukankan      html  css  js  c++  java
  • 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就可以以朋友的身份来访问类的私有成员了。
            
          
  • 相关阅读:
    JVM系列六(自定义插入式注解器).
    JVM系列五(Javac 字节码编译器).
    2019 — 求不得,放不下
    Mybatis 条件判断单双引号解析问题
    JVM系列四(对象分配策略).
    JVM系列三(垃圾收集器).
    Spring MVC -- Spring Tool Suite和Maven(安装Tomcat、JDK)
    Spring MVC -- 单元测试和集成测试
    Spring MVC -- 下载文件
    Spring MVC -- 上传文件
  • 原文地址:https://www.cnblogs.com/sunfie/p/4394595.html
Copyright © 2011-2022 走看看