第六周项目六 复数模板类(类外定义&加减乘除)
来源:互联网 发布:淘宝显示在线人数插件 编辑:程序博客网 时间:2024/04/30 00:21
项目要求
阅读教材例10.1。该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的。可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型。
(1)要求类成员函数在类外定义。
(2)在此基础上,再实现减法、乘法和除法
你可以使用的main()函数如下。
int main( ){ Complex<int> c1(3,4),c2(5,-10),c3; //实部和虚部是int型 c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display( ); Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; //实部和虚部是double型 c6=c4.complex_add(c5); cout<<"c4+c5="; c6.display( ); //下面测试减法、乘法和除法 …… return 0;}
代码如下
#include <iostream>using namespace std;template <class numtype>class Complex{public: Complex(numtype r=0,numtype i=0):real(r),imag(i) {}; Complex operator + (Complex &c2); Complex operator - (Complex &c2); Complex operator * (Complex &c2); Complex operator / (Complex &c2); void display();private: numtype real; numtype imag;};template <class numtype>void Complex<numtype>::display(){ cout<<"("<<real<<","<<imag<<"i"<<")"<<endl;}template <class numtype>Complex<numtype> Complex<numtype>::operator + (Complex<numtype> &c2){ Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c;}template <class numtype>Complex<numtype> Complex<numtype>::operator - (Complex<numtype> &c2){ Complex c; c.real=real-c2.real; c.imag=imag-c2.imag; return c;}template <class numtype>Complex<numtype> Complex<numtype>::operator * (Complex<numtype> &c2){ Complex c; c.real=real*c2.real-imag*c2.imag; c.imag=real*c2.imag+imag*c2.real; return c;}template <class numtype>Complex<numtype> Complex<numtype>::operator / (Complex<numtype> &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;}int main( ){ Complex<int> c1(3,4),c2(5,-10),c3; //实部和虚部是int型 //c3=c1.complex_add(c2); c3=c1+c2; cout<<"c1+c2="; c3.display( ); Complex<double> c4(3.1,4.4),c5(5.34,-10.21),c6; //实部和虚部是double型 //c6=c4.complex_add(c5); c6=c4+c5; cout<<"c4+c5="; c6.display( ); //下面测试减法、乘法和除法 c3=c1-c2; cout<<"c1-c2="; c3.display( ); c6=c4-c5; cout<<"c4-c5="; c3.display( ); c3=c1*c2; cout<<"c1*c2="; c3.display( ); c6=c4*c5; cout<<"c4*c5="; c3.display( ); c3=c1/c2; cout<<"c1/c2="; c3.display( ); c6=c4/c5; cout<<"c4/c5="; c3.display( ); return 0;}
运行结果
0 0
- 第六周项目六 复数模板类(类外定义&加减乘除)
- 第六周上机实践项目6-复数模板类(1类外定义、2加减乘除)
- 第六周项目六 复数模板类
- 第六周项目六--复数模板类
- 第六周项目六 复制模板类(复数类)
- 第六周项目六:复数模板类(1)
- 第六周项目六:复数模板类(2)
- 第六周项目六 复数模板类(3)
- 第六周 项目六(1):复数模板类
- 第六周 项目六(3):复数模板类
- 第六周 项目六--复数模板类(1)
- 第六周 项目六--复数模板类(3)
- 第六周项目六复数模板类(1)
- 第六周项目六复数类模板(2)
- 第六周项目六复数模板类(3)
- 第六周 项目六-复数模板类(3)
- 第六周项目6.1 复数模板类——复数的加减乘除
- 第六周项目六--复数模板类(友元函数)
- UVA 537 解题报告
- 黑马程序员-OC学习日记四之继承的小结
- java操作Excel、PDF文件
- nyoj题目259:茵茵的第一课
- Android动画学习笔记-Android Animation
- 第六周项目六 复数模板类(类外定义&加减乘除)
- 输入十个数字,逆序输出
- [leetcode]Compare Version Numbers
- Junit4 三角形测试例子,供初学者借鉴(仅供参考)
- spring中bean配置的常用方式
- 《特种兵之侦察兵》
- 判断字符串及其子串是否是包含回文字,如果包含输出长度。
- Longest Valid Parentheses
- iOS开发系列之常用自定义控件开发集—Android的Toast控件开发