用“+”、“-”能够实现复数的加减运算…

本文介绍如何通过重载加法和减法运算符来实现复数的加减运算。利用C++中的类成员函数,我们可以自定义复数类,并为该类重载基本的数学运算符,从而方便地进行复数运算。
 
用“+-”能够实现复数的加减运算吗?
答案是不可以的!! 
 
实现复数加减运算的方法
——重载+-运算符
运算符成员函数的设计
 
n重载为类成员函数
<函数类型> operator <运算符>(<参数表>)
{
<函数体;>
}
n重载为友元函数
Friend <函数类型> operator <运算符>(<参数表>)
{
<函数体;>
}
n重载为类成员函数时 
参数个数=原操作数个数-1
(后置++--除外)
n重载为友元函数时  参数个数=原操作数个数,且至少应该有一个自定义类型的形参。
 
class Complex {
public:
Complex(double r = 0, double i = 0 ) {
this->r = r ;
this->i = i ;
}
Complex operator + (Complex c) {
Complex complex ;
complex.i = this->i + c.i ;
complex.r = this->r + c.r ;
return complex ;
}
Complex operator - (Complex c) {
Complex complex ;
complex.i = this->i - c.i ;
complex.r = this->r - c.r ;
return complex ;
}
void display() {
cout <<"["<< r <<","<< i <<"]"<< endl ;
}
private:
double r ;
double i ;
};
 
void main() {
Complex c1(1.1 , 2.2) ;
Complex c2(2.2 , 3.3) ;
Complex c3 = c1 - c2 ; //c1.operater-(c2)
c3.display() ;
}
  由于在最近的一个项目中需要用到复数表达式的计算,计算的特点是:对于同一个公式需要进行重复多次的计算,每次计算时只需要变换公式中的某些变量的值。于是花了点时间写了个编译型的复数表达式计算器,该计算器的核心思想是对一个字符串编译一次,转换为一个计算序列,计算时不再分析字符串,直接按照计算序列计算。例如:1+2*5,可以转换为类似下面的计算序列:<br><br>1、数值1赋值到临时变量1<br><br>2、数值2赋值到临时变量2<br><br>3、数值5赋值到临时变量3<br><br>4、临时变量2等于临时变量2乘以临时变量5 <br><br>5、临时变量1等于临时变量1加上临时变量2<br><br>6、返回临时变量1<br><br>  这样在多次重复计算是就省去了编译的过程,提高了效率。<br><br>  基于以上思想我编写了这个编译型复数表达式计算器。<br>  该计算器提供了多种复数计算函数,支持变量(变量在表达式中以大写的V开头),支持多行表达式,表达式之间用分号";"间隔。例如您可以这样写计算表达式:<br>V0=12+i;<br>V1=V0*V0;<br>log(V1);<br>  计算的结果为4.976734 + 0.166282i。<br>  支持常量e和pi,例如表达式e^pii的计算结果为-1.000000 + 0.000000i。支持的运算符有-(负号)、+、-、*、/、^(幂运算符)、=、(、)、i(虚数定义符);支持的函数有abs, arg, conj, real, imag, norm, exp, log, log10, sqrt, sin, cos, sinh, cosh, tan, tanh<br><br>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值