dongdongxhh1
dongdongxhh1
采纳率100%
2017-07-02 06:41

一个有难度的问题,怎么使用运算符重载<<实现显示输出一个复数?

已采纳

一个有难度的问题,怎么使用运算符重载<<实现显示输出一个复数?怎么用到虚函数实现运算符重载?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 4年前
    点赞 评论 复制链接分享
  • Lc_BoYi 小小小小小学生 4年前

    在复数类中重载<<,和重载其他操作符一样。注意必须是友元函数

     #include <iostream>
    #include <assert.h>
    #include <string.h>
    
    using namespace std;
    
    class Complex
    {
        double re,im;
    public:
        Complex(double r,double i):re(r),im(i)
        {
    
        }
        Complex()
        {
            re = 0;
            im = 0;
        }
        Complex operator!();
        Complex operator+(const Complex &obj);
        //重载输入输出运算符,只能用友元函数
        friend ostream &operator<<(ostream &os,const Complex &c);
        friend istream &operator>>(istream &is,Complex &c);
    };
    
    Complex Complex::operator +(const Complex &obj)
    {
        Complex temp;
        temp.re = re + obj.re;
        temp.im = im + obj.im;
        return temp;
    }
    
    Complex Complex::operator !()
    {
        Complex temp;
        temp.re = -re;
        temp.im = -im;
        return temp;
    }
    
    ostream & operator<<(ostream &os,const Complex &c)
    {
        os << c.re;
        if(c.im > 0)
            os << "+" << c.im << "i" << endl;
        else
            os << c.im << "i" << endl;
        return os;
    }
    
    istream & operator>>(istream &is,Complex &c)
    {
        is >> c.re >> c.im;
        return is;
    }
    
    int main(int argc,char *argv[])
    {
        Complex obj1(1,2),obj2(3,4);
        Complex obj3 = obj1 + !obj2;
        cout << obj3;
        cin >> obj3;
        cout << obj3;
        return 0;
    }
    
    点赞 1 评论 复制链接分享