首页 > 代码库 > C++复数运算 重载
C++复数运算 重载
近期整理下很久前写的程序,这里就把它放在博文中了,有些比较简单,但是很有学习价值。
下面就是自己很久前实现的复数重载代码,这里没有考虑特殊情况,像除法中,分母不为零情况。
#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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。