• 重载<<和>>


    在C++编程中实现数据的输入/输出能够用cin>>ch/cout<<ch;

    可是使用cin>>ch或cout<<ch并不能实现一些特殊的数据的输入或者输出,比方输入复数、输出复数、输入时间、输出时间


    为了解决对于特殊数据的输入和输出在C++中能够使用运算符重载的方式实现。能够通过重载>>和<<运算符实现特殊数据的输入和输出


    1重载>>

    重载函数的形式:

    <span style="color:#000000;">friend istream&  operator >>(istream& input, Complex& c);</span>


    第一个參数: istream表示输入流

    第二个參数: Complex& 表示对Complex类实行输入

    返回值: istream表示返回输入流


    2重载<<

    重载函数的形式:

     friend ostream&  operator <<(ostream& output, Complex& c);


    第一个參数: ostream表示输入流

    第二个參数: Complex& 表示对Complex类实行输出

    返回值: ostream表示返回输出流


    运用实例,通过重载>>和<<实现复数的输入和输出

    #include <iostream>
    
    using namespace std;
    
    class Complex   
    {
    public:
          Complex( )//定义默认构造函数初始化复数
          {
              real=0;
              imag=0;
          }      
         
          //使用初始化表初始化复数
          Complex(double r, double i):real(r),imag(i){}
         
          Complex operator+(Complex &c2);//复数的加法
          Complex operator-(Complex &c2);//复数的减法
          Complex operator*(Complex &c2);//复数的乘法
          Complex operator/(Complex &c2);//复数的除法
    
          //重载<<运算符实现输出复数
          friend ostream&  operator <<(ostream& output, Complex& c);
    
           //重载>>运算符实现输入复数
          friend istream&  operator >>(istream& input, Complex& c);
    
    private:
          double real;//复数的实部
          double imag;//复数的虚部
    };
    
    //复数的加法
    Complex Complex::operator+(Complex &c2)
    {
        Complex c3;
    
        c3.real  = real + c2.real;
        c3.imag  = imag + c2.imag;
    
        return c3;
    }
    
    //复数的减法
    Complex Complex::operator-(Complex &c2)
    {
        Complex c3;
    
        c3.real  = real - c2.real;
        c3.imag  = imag - c2.imag;
    
        return c3;
    }
    
    //复数的乘法
    Complex Complex::operator*(Complex &c2)
    {
        Complex c3;
    
        c3.real = real*c2.real - imag * c2.imag;
        c3.imag = real*c2.imag + imag * c2.real;
    
        return c3;
    }
    
    //复数的除法
    Complex Complex::operator/(Complex &c2)
    {  
        Complex c3;
    
        c3.real = (real * c2.real + imag * c2.imag) / (c2.real*c2.real + c2.imag * c2.imag);
    
        c3.imag = (imag * c2.real - real * c2.imag) / (c2.real*c2.real + c2.imag * c2.imag);
    
        return c3;
    }
    
    //重载>>运算符实现输入复数
    istream&  operator >>(istream& input, Complex& c)
    {
        char op, ch;//保存字符 ,如1+2i, op保存+, ch保存i
    
        input>>c.real>>op>>c.imag>>ch;
    
        return input;
    }
    
    //重载<<运算符实现输出复数
    ostream&  operator <<(ostream& output, Complex& c)
    {
        output<<c.real<<"+"<<c.imag<<"i"<<endl;
    
        return output;
    }
    
    void main( )
    {
        //定义三个复数
        Complex c1, c2, c3;
    
        cout<<"请输入一个复数:";
        cin>>c1;
    
        cout<<"请输入一个复数:";
        cin>>c2;
    
        //打印第一个复数
        cout<<"c1 = ";
        cout<<c1;
       
        //打印第二个复数
        cout<<"c2 = ";
        cout<<c2;
    
        //两个复数相加
        c3 = c1 + c2;
        cout<<"c1 + c2 = ";
        cout<<c3;
    
        //两个复数想减
        c3 = c1 - c2;
        cout<<"c1 - c2 = ";
       cout<<c3;
    
        //两个复数相乘
        c3 = c1 * c2;
        cout<<"c1 * c2 = ";
        cout<<c3;
    
        //两个复数相除
        c3 = c1 / c2;
        cout<<"c1 / c2 = ";
        cout<<c3;
    
        system("pause");
    }


    程序运行结果:


    在程序中分别输入  5+10i  和  4+8i  后


    
  • 相关阅读:
    第一章-实例7-猴子吃桃问题
    第一章-实例6-判断是否为闰年
    第一章-实例3-计算变量所占字节数
    IDEA学习笔记
    spring boot学习概要(尚硅谷)
    JSP动态WEB开发技术--第一章
    学习前端的准备任务
    cmd优化
    软件测试基础概念
    软件工程理论
  • 原文地址:https://www.cnblogs.com/yfceshi/p/7289238.html
Copyright © 2020-2023  润新知