c++重载运算符

#include
using namespace std;
class fun     //复数加法 减法 乘法 除法的类(函数重载)
{
public:
 fun()
 {real=0;imag=0;}
 fun(double r,double i)
 {
  real=r;
  imag=i;
 }
 friend fun operator +(fun &,fun &);
 friend fun operator -(fun &,fun &);
 friend fun operator *(fun &,fun &);
 friend fun operator /(fun &,fun &);
 void show()
 {
  printf("%.2lf+%.2lfi\n",real,imag);
 }
protected:
 double real;
 double imag;
};
void pp(int);
using namespace std;

fun operator +(fun &t1,fun &t2)
{
 return fun(t1.real+t2.real,t1.imag+t2.imag);
}
fun operator -(fun &t1,fun &t2)
{
 return fun(t1.real-t2.real,t1.imag-t2.imag);
}
fun operator *(fun &t1,fun &t2)
{
 return fun(t1.real * t2.real - t1.imag * t2.imag,t1.real * t2.imag + t1.imag*t2.real);
}
fun operator /(fun &t1,fun &t2)
{
 fun temp=t1+t2;
 double c=t2.imag*t2.imag+t2.real*t2.real;
 temp.real/=c;
 temp.imag/=c;
 return temp;
}
void pp(int f)
{
 double a,b,c,d;
 if(f==1)
 {
  printf("输入第一个复数的实部:");
  cin>>a;
  printf("输入第一个复数的虚部:");
  cin>>b;
  printf("输入第二个复数的实部:");
  cin>>c;
  printf("输入第二个复数的虚部:");
  cin>>d;
  fun t1(a,b),t2(c,d);
  fun t3=t1+t2;
  t3.show();
  cout<<endl;
  system("pause");
 }
 else if(f==2)
  {
  printf("输入第一个复数的实部:");
  cin>>a;
  printf("输入第一个复数的虚部:");
  cin>>b;
  printf("输入第二个复数的实部:");
  cin>>c;
  printf("输入第二个复数的虚部:");
  cin>>d;
  fun t1(a,b),t2(c,d);
  fun t3=t1-t2;
  t3.show();
  cout<<endl;
  system("pause");
 }
 else if(f==3)
  {
  printf("输入第一个复数的实部:");
  cin>>a;
  printf("输入第一个复数的虚部:");
  cin>>b;
  printf("输入第二个复数的实部:");
  cin>>c;
  printf("输入第二个复数的虚部:");
  cin>>d;
  fun t1(a,b),t2(c,d);
  fun t3=t1*t2;
  t3.show();
  cout<<endl;
  system("pause");
 }
 else if(f==4)
  {
  printf("输入第一个复数的实部:");
  cin>>a;
  printf("输入第一个复数的虚部:");
  cin>>b;
  printf("输入第二个复数的实部:");
  cin>>c;
  printf("输入第二个复数的虚部:");
  cin>>d;
  fun t1(a,b),t2(c,d);
  fun t3=t1/t2;
  t3.show();
  cout<<endl;
  system("pause");
 }
}
int main()
{
 int i;
 while(1)
 {
  system("CLS");
  cout<<"复数计算\n1:加法\n2:减法\n3:乘法\n4:除法\n5:退出\n";
  cin>>i;
  if(i==1)
   pp(1);
  else if(i==2)
   pp(2);
  else if(i==3)
   pp(3);
  else if(i==4)
   pp(4);
  else
   exit(1);
 }
 return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值