zoukankan      html  css  js  c++  java
  • c++ operator重载

    #include <iostream>
    using namespace std;
    class A
    {
    public:
     A(double _data = 0.0) :
      data(_data)
     {

     }
     A& operator =(const A& rhs)
     {
      data = rhs.data;
      return *this;
     }
     friend A operator +(const A& lhs, const A& rhs);
     friend A operator -(const A& lhs, const A& rhs);
     friend A operator *(const A& lhs, const A& rhs);
     friend A operator +(const A& lhs, double rhs);
     friend A operator +(double lhs, const A& rhs);
     friend A operator *(const A& lhs, double rhs);
     friend A operator *(double lhs, const A& rhs);
     friend A operator -(const A& lhs, double rhs);
     friend A operator -(double lhs, const A& rhs);
     friend ostream& operator <<(ostream& fout, A& a);
     //  A& operator += (const A& rhs);
     //  A& operator -= (const A& rhs);
     //  A& operator *= (const A& rhs);
    private:
     double data;
    };
    A operator +(const A& lhs, const A& rhs)
    {
     A res(0);
     res.data = lhs.data + rhs.data;
     return res;
    }
    A operator -(const A& lhs, const A& rhs)
    {
     A res(0);
     res.data = lhs.data - rhs.data;
     return res;
    }
    A operator *(const A& lhs, const A& rhs)
    {
     A res(0);
     res.data = lhs.data * rhs.data;
     return res;
    }
    A operator +(const A& lhs, double rhs)
    {
     A res(0);
     res.data = lhs.data + rhs;
     return res;
    }
    A operator +(double lhs, const A& rhs)
    {
     A res(0);
     res.data = lhs + rhs.data;
     return res;
    }
    A operator *(const A& lhs, double rhs)
    {
     A res(0);
     res.data = lhs.data * rhs;
     return res;
    }
    A operator *(double lhs, const A& rhs)
    {
     A res(0);
     res.data = lhs * rhs.data;
     return res;
    }
    A operator -(const A& lhs, double rhs)
    {
     A res(0);
     res.data = lhs.data - rhs;
     return res;
    }
    A operator -(double lhs, const A& rhs)
    {
     A res(0);
     res.data = lhs - rhs.data;
     return res;
    }
    ostream& operator <<(ostream& fout, A& a)
    {
     fout << a.data;
     return fout;
    }
    int main(int argc, char* argv[])
    {
     A a(2.3);
     A b(1.2);
     A d(3.4);
     A c;
     c = a + b + d;
     c = a + b;
     c = a + 1.0;
     c = a - b;
     c = a - 1.0;
     c = a * b;
     c = a * 1.0;
     cout << c << endl;
     c = 1.0 + 2.0 * a * a - 3.0 * a * b;
     cout << c << endl;
     return 0;
    }

    #include <string>
    #include <fstream>
    #include <iostream>
    using namespace std;
    class Person
    {
    public:
     Person(string name, string sex, string age) :
      _name(name), _sex(sex), _age(age)
     {
     }
     string getName() const
     {
      return _name;
     }
     string getSex() const
     {
      return _sex;
     }
     string getAge() const
     {
      return _age;
     }
    private:
     string _name;
     string _sex;
     string _age;
    };

    ostream& operator<<(ostream &c, const Person& p) //写成iostream会出错的
    {
    return c << p.getName() << "\t" << p.getSex() << "\t" << p.getAge() << "\n";
    }

    int main()
    {
     ofstream outfile("out.txt");
     if (!outfile)
     {
      cout << "create or open file error" << endl;
      exit(-1);
     }
     Person p(string("aa"), string("Man"), string("13"));
     outfile << p;
     return 0;
    }


     

  • 相关阅读:
    为什么全局变量一定要初始化?
    SecureCRT 使用密钥登录 Ubuntu
    ubuntu samba 服务器搭建
    Linux 软硬链接的区别及目录权限对软硬链接的影响
    【转载】解析 java 按值传递还是按引用传递
    (转)如何学好C语言
    (转)五个方法成为更好的程序员
    (转)SQLite数据库的加密
    鸟哥Linux私房菜(基础篇)——第十一章:认识与学习Bash
    鸟哥Linux私房菜(基础篇)——第五章:首次登入与在线求助 man page笔记
  • 原文地址:https://www.cnblogs.com/byfei/p/3112256.html
Copyright © 2011-2022 走看看