近期整理下很久前写的程序,这里就把它放在博文中了,有些比较简单,但是很有学习价值。
下面就是自己很久前实现的复数重载代码,这里没有考虑特殊情况,像除法中,分母不为零情况。
#include <iostream> /* #include <conio.h> #include<stdio.h> #include<iomanip> #include<string> #include<sstream> */ using namespace std; class complex { double real,imag; public: complex(double,double); void disp(char *); friend complex operator + (complex,complex); friend complex operator - (complex,complex); friend complex operator * (complex,complex); friend complex operator / (complex,complex); }; complex::complex (double r=0,double i=0) { real = r; imag = i; } void complex::disp (char *str) { cout.unsetf(ios::showpos); cout<<str<<"="<<real; if (imag) { cout.setf(ios::showpos); cout<<imag<<‘i‘; } cout<<endl; cout.unsetf(ios::showpos); } complex operator + (complex cpl1,complex cpl2) { double t=cpl1.real+cpl2.real; double i=cpl1.imag+cpl2.imag; return complex(t,i); } complex operator - (complex cpl1,complex cpl2) { double t=cpl1.real-cpl2.real; double i=cpl1.imag-cpl2.imag; return complex(t,i); } complex operator * (complex cpl1,complex cpl2) { double t=cpl1.real*cpl2.real - cpl1.imag*cpl2.imag; double i=cpl1.real*cpl2.imag + cpl1.imag*cpl2.real; return complex(t,i); } complex operator / (complex cpl1,complex cpl2) { double t=(cpl1.real*cpl2.real+cpl1.imag*cpl2.imag)/(cpl2.real*cpl2.real+cpl2.imag*cpl2.imag); double i=(cpl1.imag*cpl2.real-cpl1.real*cpl2.imag)/(cpl2.real*cpl2.real+cpl2.imag*cpl2.imag); return complex(t,i); } int main(void) { complex c1(25,40),c2(100,200),c3(0); c1.disp("c1"); c2.disp("c2"); c3=c1+c2; c3.disp("c3"); c3=c1-c3; c3.disp("c3"); c3=c1*c2; c3.disp("c3"); c3=c1/c2; c3.disp("c3"); getchar(); return 0; }