第12周项目1-实现复数类中的运算符重载(基础工程)
2016-05-19 09:25
495 查看
/* *Copyright(C) 2016,计算机与控制工程学院 *All rights reserved. *文件名:zhang.cpp *作者:张志新 *完成日期:2016年5月19日 *版本号:v1.0 * *问题描述:定义一个定义完整的类(是可以当作独立的产品发布,成为众多项目中的“基础工程”)。这样的类在(2)的基础上, *扩展+、-、*、/运算符的功能,使之能与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 &c1, Complex &c2); friend Complex operator+(double d1, Complex &c2); friend Complex operator+(Complex &c1, double d2); friend Complex operator-(Complex &c1, Complex &c2); friend Complex operator-( double d1, Complex &c2); friend Complex operator-(Complex &c1, double d2); friend Complex operator*(Complex &c1, Complex &c2); friend Complex operator*(double d1, Complex &c2); friend Complex operator*(Complex &c1, double d2); friend Complex operator/(Complex &c1, Complex &c2); friend Complex operator/(double d1, Complex &c2); friend Complex operator/(Complex &c1, double d2); void display(); private: double real; double imag; }; //对运算符的重载 Complex operator+(Complex &c1, Complex &c2)//加 { Complex c3; c3.real=c1.real+c2.real; c3.imag=c1.imag+c2.imag; return c3; } Complex operator+(double d1, Complex &c2) { Complex c(d1,0),c3; c3.real=c.real+c2.real; c3.imag=c.imag+c2.imag; return c3; } Complex operator+(Complex &c1, double d2) { Complex c(d2,0),c3; c3.real=c.real+c1.real; c3.imag=c.imag+c1.imag; return c3; } Complex operator-(Complex &c1, Complex &c2)//减 { Complex c3; c3.real=c1.real-c2.real; c3.imag=c1.imag-c2.imag; return c3; } Complex operator-( double d1, Complex &c2) { Complex c(d1,0),c3; c3.real=c.real-c2.real; c3.imag=c.imag-c2.imag; return c3; } Complex operator-(Complex &c1, double d2) { Complex c(d2,0),c3; c3.real=c1.real-c.real; c3.imag=c1.imag-c.imag; return c3; } Complex operator*(Complex &c1, Complex &c2)//乘 { Complex c3; c3.real=c1.real*c2.real; c3.imag=c1.imag*c2.imag; return c3; } Complex operator*(double d1, Complex &c2) { Complex c(d1,0),c3; c3.real=c2.real*c.real; c3.imag=c2.imag*c.imag; return c3; } Complex operator*(Complex &c1, double d2) { Complex c(d2,0),c3; c3.real=c1.real*c.real; c3.imag=c1.imag*c.imag; return c3; } Complex operator/(Complex &c1, Complex &c2)//除 { Complex c3; c3.real=c1.real/c2.real; c3.imag=c1.imag/c2.imag; return c3; } Complex operator/(double d1, Complex &c2) { Complex c(d1,0),c3; c3.real=c.real/c2.real; c3.imag=c.imag/c2.imag; return c3; } Complex operator/(Complex &c1, double d2) { Complex c(d2,0),c3; c3.real=c1.real/c.real; c3.imag=c1.imag/c.imag; return c3; } void Complex::display()//输出计算后的复数 { cout<<"("<<real<<","<<imag<<"i)"<<endl; } int main() { Complex c1(3,4),c2(5,-10),c3; int d=11; cout<<"c1="; c1.display(); cout<<"c2="; c2.display(); cout<<"d="<<d<<endl; cout<<"重载运算后的复数的值为:" c3=c1+c2; cout<<"c1+c2="; c3.display(); c3=c1-c2; cout<<"c1-c2="; c3.display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); c3=c1/c2; cout<<"c1/c2="; c3.display(); cout<<"c1+d="; (c1+d).display(); cout<<"d+c1="; (d+c1).display(); c3=c1-c2; cout<<"c1-c2="; c3.display(); cout<<"c1-d="; (c1-d).display(); cout<<"d-c1="; (d-c1).display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); cout<<"c1*d="; (c1*d).display(); cout<<"d*c1="; (d*c1).display(); c3=c1/c2; cout<<"c1/c2="; c3.display(); cout<<"c1/d="; (c1/d).display(); cout<<"d/c1="; (d/c1).display(); return 0; }
学习心得:
这个程序包含了复数与复数的加减乘除,复数与整数的加减乘除,整数与复数的加减乘除,还要注意加减乘除的前后顺序
相关文章推荐
- 第九周阅读程序
- 第10、11周项目5-摩托继承自行车和机动车
- 数据结构和算法05 之红-黑树(看完包懂~)
- Poj The xor-longest Path 经典题 Trie求n个数中任意两个异或最大值
- 计算机程序的构造和解释 练习1.9
- 几种基础的算法学习 (php)
- 第10、11周项目5:摩托车继承自行车和机动车
- 【Android】导入第三方库时,关于so文件的一些思考
- uboot主Makefile分析
- C++实验6-数组合并
- Net Core MVC6 RC2 启动过程分析
- cJONS序列化工具解读三(使用案例)
- php script 的生命周期
- Flex xml格式化以及缩进量
- Android Studio如何查看branch列表及切换branch
- iOS学习之—— NSUserDefaults
- YOLO
- Pod经常冲突 拉下来缺少库
- 第11周项目3—警察和厨师 (2)
- Smart210---学习记录 竞态与并发