第八周项目一实现复数类中运算符重载
2014-04-15 16:05
399 查看
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:纪丽娜 * 完成日期:2014 年 4 月15 日 * 版 本 号:v1.0 * 问题描述:一个定义完整的类,是可以当作独立的产品发布,成为众多项目中的“基础工程”, 这样的类在方案二的基础上,扩展+、-、*、/运算符的功能,使之能与double型数据进行运算。 设Complex c; double d; c+d和d+c的结果为“将d视为实部为d的复数同c相加”,其他-、*、/运算符类似。 */ #include <iostream> using namespace std; class Complex { public: Complex() { real=0; imag=0; } Complex(double r,double i) { real=r; imag=i; } Complex operator+(Complex &c2); Complex operator-(Complex &c2); Complex operator*(Complex &c2); Complex operator/(Complex &c2); //c+c1 friend Complex operator+(double c,Complex &c1); friend Complex operator-(double c,Complex &c1); friend Complex operator*(double c,Complex &c1); friend Complex operator/(double c,Complex &c1); //c1+c friend Complex operator+(Complex &c2,double c); friend Complex operator-(Complex &c2,double c); friend Complex operator*(Complex &c2,double c); friend Complex operator/(Complex &c2,double c); void display(); private: double real; double imag; }; //下面定义成员函数 Complex Complex::operator+(Complex &c2) { Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } Complex Complex::operator-(Complex &c2) { Complex c; c.real=real-c2.real; c.imag=imag-c2.imag; return c; } Complex Complex::operator*(Complex &c2) { Complex c; c.real=(real*c2.real-imag*c2.imag); c.imag=(real*c2.imag+imag*c2.real); return c; } Complex Complex::operator/(Complex &c2) { Complex c; c.real=(real*c2.real+imag*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); c.imag=(imag*c2.real-real*c2.imag)/(c2.real*c2.real+c2.imag*c2.imag); return c; } //c+c1 Complex operator+(double c,Complex &c1) { return Complex(c+c1.real,c1.imag); } Complex operator-(double c,Complex &c1) { return Complex(c-c1.real,c1.imag); } Complex operator*(double c,Complex &c1) { return Complex(c*c1.real,c*c1.imag); } Complex operator/(double c,Complex &c1) { Complex c2; c2.real=(c*c1.real)/(c1.real*c1.real+c1.imag*c1.imag); c2.imag=-1*((c*c1.imag)/(c1.real*c1.real+c1.imag*c1.imag)); return c2; } //c1+c Complex operator+(Complex &c2,double c) { return Complex(c2.real+c,c2.imag); } Complex operator-(Complex &c2,double c) { return Complex(c2.real-c,c2.imag); } Complex operator*(Complex &c2,double c) { return Complex(c*c2.real,c*c2.imag); } Complex operator/(Complex &c2,double c) { return Complex(c2.real/c,c2.imag/c); } //输出 void Complex::display() { if(real==0) {cout<<imag<<"i"<<endl; }else { if(imag<0) {cout<<real<<imag<<"i"<<endl; }else if(imag==0) {cout<<real<<endl; }else {cout<<real<<"+"<<imag<<"i"<<endl;} } } //下面定义用于测试的main()函数 int main() { Complex c1(3,4),c2(5,-10),c3; double c; cout<<"c1="; c1.display(); cout<<"c2="; c2.display(); c3=c1+c2; cout<<"c1+c2="; c3.display(); c3=c1-c2; cout<<"c1-c2="; c3.display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); c3=c1/c2; cout<<"c1/c2="; c3.display(); cout<<"请输入一个double类型的数据与c1进行运算:"<<endl; cin>>c; c3=c+c1; cout<<"c+c1="; c3.display(); c3=c-c1; cout<<"c-c1="; c3.display(); c3=c*c1; cout<<"c*c1="; c3.display(); c3=c/c1; cout<<"c/c1="; c3.display(); cout<<"请输入一个double类型的数据与c2进行运算:"<<endl; cin>>c; c3=c2+c; cout<<"c2+c="; c3.display(); c3=c2-c; cout<<"c2-c="; c3.display(); c3=c2*c; cout<<"c2*c="; c3.display(); c3=c2/c; cout<<"c2/c="; c3.display(); return 0; }
心得:嘿嘿。。。。重载还是很好玩的嘛。。。喵。。。
相关文章推荐
- 第八周项目1-实现复数类中的运算符重载(1)
- 第八周 项目一 (1) 实现复数类中的运算符重载 成员函数
- 第八周上机项目一实现复数类中的运算符重载
- 第八周项目1-实现复数类中的运算符重载(类的成员函数)
- 第八周 项目1-实现复数类中的运算符重载(1)
- 第八周项目1-实现复数类中的运算符重载(2)
- 第八周 项目一 实现复数类中的运算符重载(2)
- 第八周项目一实现复数类中的运算符重载(1)
- 第八周上机实践项目1-实现复数类中的运算符重载(类的成员函数)
- 第八周 项目一--实现复数类中的运算符重载(2)
- 第二学期第八周项目1--实现复数类中的运算符重载
- 第八周项目1-实现复数类中的运算符重载(3)
- 第八周项目1——2 实现复数类中的运算符重载(友元函数)
- 第八周 项目1.1 实现复数类中的运算符重载
- 第八周项目1-实现复数类中的运算符重载(类的友元函数)
- 第八周【项目1-实现复数类中的运算符重载】
- 第八周项目一-实现复数类的运算符重载(3)
- 第八周项目1 实现复数类中的运算符重载
- 第八周 项目一 实现复数类中的运算符重载(1)
- 第八周项目一实现复数类中的运算符重载(1)