python运算符重载、并且编写复数类的加减乘除_编程基础篇:定义一个复数类Complex,重载运算符“+,-,*,/”,使之能用于复数的加减乘除.....出现的问题及代码...
定义一个复数类Complex,重载运算符“+”、“-”、“*”、“/”,使之能用于复数的加、减、乘、除。要求:将“+”和“-”的运算符重载函数作为Complex的成员函数;将“*”和“/” 的运算符重载函数作为友元函数。编写程序,分别求两个复数之和、差、积、商。
提示:若已知c1=a+bi,c2=c+di,则:
c1+c2=(a+c)+(b+d)i
c1-c2=(a-c)+(b-d)i
c1*c2=(ac-bd)+(ad+bc)i
c1/c2=(ac+bd)/(c*c+d*d)+((bc-ad)/( c*c+d*d))i
运行结果参考如下:
下面是代码
#include
using namespace std;
class Complex {
public :
Complex (double x=0,double y=0):real(x),imag(y) {}
friend Complex operator * (Complex &c1,Complex &c2);
friend Complex operator / (Complex &c1,Complex &c2);
Complex operator + (Complex &c2 );
Complex operator - (Complex &c2 );
void display();
private :
double real;
double imag;
};
Complex operator * (Complex &c1,Complex &c2) {
return Complex (c1.real*c2.real-c1.imag*c2.imag,c1.real*c2.imag+c1.imag*c2.real);
}
Complex operator / (Complex &c1,Complex &c2) {
Complex c;
c.real=(c1.real*c2.real+c1.imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
c.imag=(c1.imag*c2.real-c1.real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag);
return c;
}
Complex Complex ::operator + (Complex &c2) {
return Complex (real+c2.real,imag+c2.imag);
}
Complex Complex ::operator - (Complex &c2) {
return Complex (real-c2.real,imag-c2.imag);
}
void Complex ::display() {
cout<"<
}
int main() {
Complex c1(3,4),c2(5,-10),c3;
c1.display();
c2.display();
c3=c1+c2;
c3.display();
c3=c1-c2;
c3.display();
c3=c1*c2;
c3.display();
c3=c1/c2;
c3.display();
return 0;
}
出现过的问题,
1.
Complex (double x=0,double y=0):real(x),imag(y){}
参数初始化表这里需要对x,y赋初值,不然c3在编译时会报错;
2.
must take either zero or one argument
出现这个问题也困扰了我很久
二元运算符用成员重载时, 只需要一个参数, 另一个参数由this指针传入 (第一个参数由this指针自动传入到函数中去的.)
Complex operator + (Complex &c1,Complex &c2 );
所以这样写是不对的
python运算符重载、并且编写复数类的加减乘除_编程基础篇:定义一个复数类Complex,重载运算符“+,-,*,/”,使之能用于复数的加减乘除.....出现的问题及代码...相关推荐
- Java编程题:定义一个Box类,属性有:长,宽,高,并初始化数据
Java编程题:定义一个Box类,属性有:长,宽,高,并初始化数据 Box类: /*** Java编程题:定义一个Box类,属性有:长,宽,高,并初始化数据*/package Box;public c ...
- Python编程基础 第四章 编程练习 请定义一个Circle类,具体要求为:(1)每个Circle类对象可以存储圆心和半径信息;(2)具有设置圆心和半径的方法SetCenter和SetRadius
题目内容: 请定义一个Circle类,具体要求为:(1)每个Circle类对象可以存储圆心和半径信息:(2)具有设置圆心和半径的方法SetCenter和SetRadius:(3)具有计算圆面积的方法G ...
- Python编程基础 第四章 编程练习 请定义一个Cylinder类,具体要求为:(1)每个Cylinder类对象可以存储一个圆柱体;2)具有用于初始化半径和高的构造方法;(3)具有计算圆柱体体积
题目内容: 请定义一个Cylinder类,具体要求为:(1)每个Cylinder类对象可以存储一个圆柱体(包括半径和高):(2)具有用于初始化半径和高的构造方法:(3)具有计算圆柱体体积的方法GetV ...
- 抽象类可以创建对象吗_【基础篇】java-抽象类与继承的补充
##抽象类## - 概述 在继承和多态时,讲到了父类的方法多数时候,是要被子类们重写,且各自的实现不尽相同.那么对于父类来说,其方法声明还有用,方法体就没用了,这样在父类中,就只保留方法的声明和空的方 ...
- java中file类乱,【JAVA SE基础篇】47.file类的方法
1.file类的方法 1.getName():获取文件名 2.getPath():获取文件路径,设定是相对路径得到的就是相对路径,绝对路径同里 3.getAbsolutePath():获取文件绝对路径 ...
- Java基础篇:一个堆栈类
尽管Box类在说明一个类的必要的元素时是有用的,但它实际应用的价值并不大.为了显示出类的真实的功能,本章将用一个更复杂的例子来说明类的强大功能. 在Java中,就是通过类这样的机制来完成封装性.在创建 ...
- python创建学生类姓名学号_定义一个学生类,包含学号、姓名、平时成绩和考核成绩四个数据成员和以下成员方法(用Python语言):...
定义一个学生类,包含学号.姓名.平时成绩和考核成绩四个数据成员和以下成员方法(用Python语言):Python实验题目:类与文件实验要求:1.定义类2.定义并使用类对象3.打开和存取文件... 定义 ...
- Python学习之旅(核心编程基础篇003运算符)
Python学习之旅 Python核心编程基础篇2020.12.18 一.算数运算符 二.比较运算符 三.赋值运算符 四.逻辑运算符 五.成员运算符 六.身份运算符 七.三目运算符 八.运算符优先级 ...
- 小白对于学习对象和类的总结,定义一个圆柱体类Cylinder,并创建相应的对象,然后计算圆柱体的底面积和面积.
类和对象 类:类的概念就是让程序设计能更清楚卖出日常生活中的事物,也可以理解为对一类事物的统称包含对于属性描述和行为描述!注解:属性描述:描述当前类有哪些属性.行为描述:描述当前有哪些行为.举例: 以 ...
- 定义一个Employee类,排序
<用java编程>:定义一个Employee类,属性name:String:age:int:salary:double:把若干Employee对象放入List中,排序并遍历:排序规则:sa ...
最新文章
- 栈与队列6——生成最大窗口值数组
- Microsoft Exchange 2010 SP1 (一)安装准备
- STM32 内存管理实验
- eeglab中文教程系列(9)-绘制ERP图像
- Linq Coding -- Part Three [Let子句]
- 创业维艰,但我未曾放弃——一位90后创业者的自白
- BUUCTF(pwn) ciscn_2019_s_3 [ 栈溢出SROP攻击]
- poj 2187 Beauty Contest
- Couldn't find leader offsets for Set([smt,0], [smt,1], [smt,2])
- 没有为此文件配置应用程序上下文_如何在macOS中管理文件关联?
- python编程是啥-Python编程语言的特点是什么?老男孩Python学习
- kafka offset入门理解
- linux下configure命令详细介绍[转]
- hsf端口_分布式服务框架HSF
- word柱状图垂直轴数值设定_EXCEL中的图表坐标轴数值 如何设置
- 台达plc ec3程序下载通讯设置_【台达PLC】入门这样学!基础详解!
- STM32+华为云IOT设计的动态密码锁
- 警告: Category is implementing a method which will also be implemented by its primary class
- 谷歌浏览器Chrome播放rtsp实时视频,并抓图、录像、回放、倍速等
- 盘点PS使用小技巧。