第08周:1.3:类的友元函数+复数类中的运算符重载

来源:互联网 发布:fifaol数据库 编辑:程序博客网 时间:2024/06/16 07:09
/** Copyright (c) 2014, 烟台大学计算机学院* All rights reserved.* 作    者:王颖* 完成日期:2014 年 4 月 14 日* 版 本 号:v1.0* 输入描述: 无* 问题描述:类的友元函数+复数类中的运算符重载* 一个定义完整的类,是可以当作独立的产品发布,成为众多项目中的“基础工程”* ,这样的类在方案二的基础上,扩展+、-、*、/运算符的功能,使之能* 与double型数据进行运算。设Complex c; double d; c+d和d+c的* 结果为“将d视为实部为d的复数同c相加”,其他-、*、/运算符类似。* 程序输出:略* 问题分析:略* 算法设计:略*/#include <iostream>using namespace std;class Complex{public:    Complex(){real=0;imag=0;}    Complex(double r,double i){real=r; imag=i;}    friend Complex operator+(Complex &,double&);    friend Complex operator-(Complex &,double&);    friend Complex operator*(Complex &,double&);    friend Complex operator/(Complex &,double&);    friend void display(Complex&);private:    double real;    double imag;};//下面定义成员函数  Complex operator+(Complex &c2,double&t)  {           return Complex(c2.real+t,c2.imag+t);  }  Complex operator-(Complex &c2,double&t)  {      return Complex(c2.real-t,c2.imag-t);  }  Complex operator*(Complex&c2,double&t)  {            return Complex(c2.real*t,c2.imag*t);  }  Complex operator/(Complex& c2,double&t)  {            return Complex(c2.real/t,c2.imag/t);  }  void display(Complex&t)  {      cout<<"("<<t.real<<","<<t.imag<<"i)"<<endl;  }//下面定义用于测试的main()函数int main(){    Complex c1(3,4),c3;    double t=3;    cout<<"c1=";    display(c1);    cout<<"t="<<t<<endl;    c3=c1+t;    cout<<"c1+t=";    display(c3);    c3=c1-t;    cout<<"c1-t=";    display(c3);    c3=c1*t;    cout<<"c1*t=";    display(c3);    c3=c1/t;    cout<<"c1/t=";    display(c3);    return 0;}

0 0
原创粉丝点击