2015-第6周项目6-复制模板类(1)&(2)
来源:互联网 发布:php 邀请码注册数据库 编辑:程序博客网 时间:2024/05/19 00:11
【项目6-复数模板类】
阅读教材例10.1。该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的。可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型。
(1)要求类成员函数在类外定义。
阅读教材例10.1。该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的。可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型。
(1)要求类成员函数在类外定义。
(2)在此基础上,再实现减法、乘法和除法
代码:
#include <iostream>#include <cstring>using namespace std;template<class T>class Complex{public: Complex() { real=0; imag=0; } Complex(T r,T i) { real=r; imag=i; } Complex complex_add(Complex &c2); Complex complex_minus(Complex &c2); Complex complex_multiply(Complex &c2); Complex complex_divide(Complex &c2); void display();private: T real; T imag;};template<class T>Complex<T> Complex<T>::complex_add(Complex<T> &c2){ Complex<T> c; c.real=real+c2.real; c.imag=imag+c2.imag; return c;}template<class T>Complex<T> Complex<T>::complex_minus(Complex<T> &c2){ Complex<T> c; c.real=real-c2.real; c.imag=imag-c2.imag; return c;}template<class T>Complex<T> Complex<T>::complex_multiply(Complex<T> &c2){ Complex <T> c; c.real=real*c2.real-imag*c2.imag; c.imag=imag*c2.real+real*c2.imag; return c;}template<class T>Complex<T> Complex<T>::complex_divide(Complex<T> &c2){ Complex <T> c; T d=c2.real*c2.real+c2.imag*c2.imag; c.real=(real*c2.real+imag*c2.imag)/d; c.imag=(imag*c2.real-real*c2.imag)/d; return c;}template<class T>void Complex<T>::display( ){ cout<<"("<<real<<","<<imag<<"i)"<<endl;}int main( ){ Complex<int> c1(3,4),c2(5,-10),c3; //实部和虚部是int型 c3=c1.complex_add(c2); cout<<"c1+c2="; c3.display(); c3=c1.complex_minus(c2); cout<<"c1-c2="; c3.display(); c3=c1.complex_multiply(c2); cout<<"c1*c2="; c3.display(); c3=c1.complex_divide(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(); c6=c4.complex_minus(c5); cout<<"c4-c5="; c6.display( ); c6=c4.complex_multiply(c5); cout<<"c4*c5="; c6.display( ); c6=c4.complex_divide(c5); cout<<"c4/c5="; c6.display( ); return 0;}
0 0
- 2015-第6周项目6-复制模板类(1)&(2)
- 2015-第6周项目6-复制模板类(3)
- 第五周项目 6 复制模板类(1,2)
- 第6周项目6复制模板类
- 第6周项目1-深复制体验(2)
- 第6周项目6——复制模板类(2)
- 第6周项目6——复制模板类(1)
- 第五周项目 6 复制模板类(3)
- 第6周项目6-复数模板类(2)
- 第6周项目6-复数模板类(1)
- 第6周项目1-深复制体验(1)
- 第6周项目1-深复制体验(3)
- 第六周上机实践项目6——复制模板类(1)
- 第6周项目1-深复制体验(增加复制构造函数)
- 第6周项目1深复制
- 2015-第6周项目1-深复制体验
- 第9周项目1(2)深复制体验
- 第9周-项目1-深复制体验(2)
- MAC使用imessage自动发消息
- hdu 5134 Highway
- yii2中beforeDelete的方法
- 【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记17 Deledgation代理
- 云计算
- 2015-第6周项目6-复制模板类(1)&(2)
- 【ThinkingInJava】9、继承与清理
- Django动态网站基础
- RabbitMQ入门指南二(Java)
- Java 枚举7常见种用法
- lua使用优化建议
- struts2 请求过程源码分析【精】
- Linux很多命令不能使用的解决办法
- YUV格式详解