在复数类Complex中定义了两个私有的成员变量 real 和 img 分别表示复数的实部和虚部,然后定义了几个共有的成员函数:两个构造方法,一个为不带参的默认构造函数,另一个为 带两个参数的构造函数,通过该构造函数实现对私有成员变量real和img的初始化,然后是一个没有返回值对的disp()函数用来显示输出复数的值,接下来就是对四则运算的重载函数和一个赋值重载运算符的重载,用来计算该复数的共轭复数,以及一个>运算符的重载用来判断复数的大小。最后是一个普通的成员函数,用来进行复数的取模运算。

样例输出为:

1-2* i
2+3* i
两复数相加为:3+1* i
两复数相减为:-1-5* i
两复数相乘为:8-1* i
两复数相除为:-0.307692-0.538462*i
该复数的模为:2.23607
第一个复数小于第二个复数
Press any key to continue

下面是我的代码:

#include "math.h"
#include<iostream>
using namespace std;class Complex{private:double real;double img;
public:Complex();Complex(double r,double i);void disp();Complex operator + (const Complex &c);Complex operator - (const Complex &c);Complex operator * (const Complex &c);Complex operator / (const Complex &c);//使用赋值运算符的重载来计算共轭复数Complex& operator=(const Complex &c);//比较复数的大小bool operator>(const Complex &c);//取模运算double getMol();
};Complex::Complex(){}
Complex::Complex(double r,double i):real(r),img(i)//通过使用初始化列表来初始化参数
{}
Complex& Complex::operator=(const Complex &c){this->real=c.real;this->img=c.img*(-1);//共轭复数return *this;
}
void Complex::disp(){if(img>0){cout<<real<<'+'<<img<<"*i"<<endl;}else if(img==0){cout<<real<<endl;}else if(img<0){cout<<real<<img<<"*i"<<endl;}
}
double Complex::getMol(){//取模运算return sqrt(real*real+img*img);
}
Complex Complex::operator+(const Complex &c){Complex a;a.real=real+c.real;a.img=img+c.img;cout<<"两复数相加为:";return a;
}
Complex Complex::operator -(const Complex &c){Complex a;a.real=real-c.real;a.img=img-c.img;cout<<"两复数相减为:";return a;
}
Complex Complex::operator *(const Complex &c){Complex a;a.real=real*c.real-img*c.img;a.img=real*c.img+img*c.real;cout<<"两复数相乘为:";return   a;
}
Complex Complex::operator /(const Complex &c){Complex tmp;Complex cc;cc=c;Complex parent;parent.real=c.real*cc.real-cc.img*c.img;//相互共轭的两个复数的乘积运算tmp.real=(real*cc.real-img*cc.img)/parent.real;tmp.img=(real*cc.img+img*cc.real)/parent.real;cout<<"两复数相除为:";return tmp;
}
bool Complex::operator>(const Complex &c){return real>c.real && img>c.img;
}
int main(int argc, char* argv[])
{Complex c1(1,-2);Complex c2(2,3);c1.disp();c2.disp();Complex cAdd=c1.operator +(c2);cAdd.disp();Complex cSub=c1.operator -(c2);cSub.disp();Complex cMul=c1.operator *(c2);cMul.disp();Complex cChu=c1.operator /(c2);cChu.disp();double mol=c1.getMol();cout<<"该复数的模为:"<<mol<<endl;bool isBig=c1.operator >(c2);if(isBig==true){cout<<"第一个复数大于第二个复数"<<endl;}else{cout<<"第一个复数小于第二个复数"<<endl;}return 0;
}

在这里我们需要注意的是复数的除法运算,复数的除法:


通过计算除数与除数的共轭复数的乘积,将分母公约化。在代码里

Complex cc;
cc=c;

这里就调用了赋值运算符的的重载,在该重载函数中我将c的虚部的相反数赋值给了cc,cc就是c的共轭复数。
后面在主函数中:

Complex c1(1,-2);
Complex c2(2,3);

在这里,定义Complex的两个对象的同时,系统自动调用了我定义的带两个参数的构造函数,在定义的同时进行了对 对象的初始化。

C++封装复数类,实现复数运算相关推荐

  1. Java复数类实现加减乘除运算

    package ch09; public class Complex {public double real;//复数实部public double imaginary;//复数虚部public Co ...

  2. C#复数类Complex的封装

    C#复数类Complex的封装 ------------------------------------------------------------------------------------ ...

  3. C++ 复数类加减法运算重载为成员函数形式

    运算符的重载形式有两种,即重载为类的非静态成员函数和重载为非成员函数.运算符重载为类的成员函数的一般语法形式为: 返回类型 operator 运算符(形参表){函数体 } 运算符重载为非成员函数的一般 ...

  4. C++边学边用,使用类完成复数运算,可自动识别表达式(详细注释)

    我用了三天时间一共700行代码实现了这个复数计算器. 为什么会这么久呢? 其实我之前也做过一个复数计算器只不过那个只能一项一项输入数据而且只能对两个数进行运算 就像这样 请输入第一个复数的实部: 请输 ...

  5. 定义复数类Complex,重载运算符“+”,使之用于复数的加法运算

    定义复数类Complex,重载运算符"+",使之用于复数的加法运算.将运算符函数重载为非成员.非友元的普通函数. C++代码实现: #include<iostream> ...

  6. 使用c++实现复数类的运算

    复数的运算 一.前言 二.复数的运算 1.头文件(Complex.h) 2.源文件(实现函数) 3.源文件(测试函数) 4.运行截图 三.总结 一.前言 为了更深入的学习c++,小编将带领大家一起使用 ...

  7. java中复数类中相加,复数运算的JAVA类

    //这个类表示复数,定义了执行复数运算的方法. public class ComplexNumber { private double x, y; //初始化X和Y的构造函数 public Compl ...

  8. python定义一个复数类complex、并实现复数相加_用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加、减运算...

    题目: 用java定义一个复数类Complex,能够创建复数对象,并且实现复数之间的加.减运算 复数具有实部和虚部两部分,如2+5i就是一个复数,其中2为实部,5i为虚部;两复数相加时,实部与实部相加 ...

  9. 创建一个复数类Complex,对复数进行数学运算

    参考,误抄袭 问题描述: 创建一个复数类Complex,对复数进行数学运算,复数具有如下格式:realPart+imaginaryPart*i,其中,i为-1的平方根,具体要求如下: (1)利用浮点变 ...

最新文章

  1. [错误收录] the pyflakes.vim plugin requires Vim to be compiled with +python
  2. Centos7 MYSQL安装与基础命令运用
  3. NOIP2016提高组复赛解题报告
  4. spring cloud 集成consul
  5. oidc_使用Java EE和OIDC构建Java REST API
  6. nsga2算法_用遗传算法进行容量管理 让虚拟机放置策略更优
  7. CCleaner Free
  8. VMware Cloud Director 严重漏洞可使整个云基础设施遭接管
  9. 不属于python第三方程序_安装 selenium 对于python而言属于一个第三方的模块
  10. uniapp原生插件-YL视频播放器
  11. 系统修复-菜鸟也DIY
  12. C# winform下的OxyPlot(安装2.0版本!!!!)
  13. python opencv 读取mov文件
  14. Vuex仿饿了么购物车功能
  15. python朋友圈可见_女神说不能每张照片P的同样,因此朋友圈开三天可见,用Python一步解决...
  16. Megahit, metaSPAdes, metabat2, GTDB-tk, checkM
  17. 启动任务管理器两种方法
  18. 「Java基础」范型
  19. 今天的CAD练习题很简单
  20. R语言使用循环语句一次性画出多幅图

热门文章

  1. 2020年书法落款_学书法的请注意,落款不要写“庚子年”
  2. Exception in thread “main“ java.io.FileNotFoundException: test\mybatis-config.xml (系统找不到指定的路径。)
  3. 在Fedora 12上安装谷歌应用程序
  4. Bootstrap后台导航
  5. IE浏览器图片不显示,报DOM7009: 无法解码 URL 处的图像问题的解决方法
  6. HTML进阶- 4.6 补充一些不常用的元素
  7. 英语四级真题作文 计算机,2017年6月英语四级作文真题及范文:卖电脑
  8. java c 速度_Java和C#运行速度对比:Java比C#快约3倍
  9. 取多条记录时报数组越界异常_9D sp1使用DMap出图报数组越界异常
  10. 怎么判断英文网站是否做过谷歌优化?