第六周 【项目6-复数模板类】2.1
来源:互联网 发布:ubuntu16 安装mysql 编辑:程序博客网 时间:2024/06/01 10:40
该例实现了一个复数类,但是美中不足的是,复数类的实部和虚部都固定只能是double型的。可以通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时指定的实际类型。
(1)要求类成员函数在类外定义。
(2)在此基础上,再实现减法、乘法和除法
你可以使用的main()函数如下。
[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
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 T>class Complex{private: T real; T ima;public: Complex(T a=0,T b=0); Complex Complex_add(Complex & com); Complex Complex_cut(Complex & com); Complex Complex_multiply(Complex & com); Complex Complex_divide(Complex & com); void display();};template <class T>void Complex<T>::display(){ cout<<"("<<real<<","<<ima<<")"<<endl;}template <class T>Complex<T>::Complex(T a,T b){ real=a; ima=b;}template <class T>Complex <T> Complex<T>::Complex_add(Complex <T>& com){ Complex<T> c; c.real=real+com.real; c.ima=real+com.ima; return c;}template <class T>Complex<T> Complex<T>::Complex_cut(Complex & com){ Complex c; c.real=real-com.real; c.ima=real-com.ima; return c;}template <class T>Complex<T> Complex<T>::Complex_multiply(Complex & com){ Complex<T> c; c.real=real*com.real-ima*com.ima; c.ima=real*com.ima+com.real*ima; return c;}template <class T>Complex<T> Complex<T>::Complex_divide(Complex & com){ Complex <T> c; c.real=(real*com.real+ima*com.ima)/(com.real*com.real+com.ima*com.ima); c.ima=(ima*com.real-real*com.ima)/(com.real*com.real+com.ima*com.ima); return c;}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( ); //下面测试减法、乘法和除法 c3=c1.Complex_cut(c2); cout<<"c1-c2="; c3.display(); c3=c1.Complex_divide(c2); cout<<"c1/c2="; c3.display(); c3=c1.Complex_multiply(c2); cout<<"c1*c2="; c3.display(); return 0;}
本例编程主要使用到类模板,当定义一个类时前面必加 template <class numtype> 其中numtype是虚拟类型名;当在类外定义成员函数时需在每个函数前加template <class T> 即函数类型 类模板名 <虚拟类参数>::成员函数名(函数形参表)
对于类模板还需多加练习,才能更好掌握其应用
0 0
- 第六周【项目6-复数模板类】
- 第六周【项目6-复数模板类】
- 第六周 【项目6-复数模板类】
- 第六周项目6-复数模板类
- 第六周项目6-复数模板类
- 第六周 【项目6-复数模板类】2.1
- 第六周项目六 复数模板类
- 第六周项目六--复数模板类
- 第六周项目4-复数模板类
- 第六周项目6(1)-复数模板类
- 第六周项目6(2)-复数模板类
- 第六周 项目6-复数模板类(1)
- 第六周 【项目6-复数模板类】(3)
- 第六周 项目6-复数模板类(2)
- 第六周 项目6-复数模板类(3)
- 第六周【项目6-复数模板类】2.2
- 第六周 项目6-1 复数模板类
- 第六周项目6——复数模板类
- noj 1860 保研(01背包 概率dp)
- PHP中的变量
- Android:Layout_weight的深刻理解
- hive 使用心得
- Java StringBuffer和StringBuilder类-修改字符串
- 第六周 【项目6-复数模板类】2.1
- netif_start_queue、netif_wake_queue、
- 池子项目上线总结
- 开始Android开发的学习!
- 第九题
- Swap Nodes in Pairs
- 我眼中的产品经理
- 代码积累,猜数价格
- 省选模版复习——线性筛法