练习使用类模板

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:                              
* 作    者:     苗影                         
* 完成日期:       2012  年     4  月    4    日
* 版 本 号:          
* 对任务及求解方法的描述部分
* 输入描述: 
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束
*/
#include<iostream>
using namespace std;
template<class T>
class Comple
{
	public:
		Comple(){real=0;imag=0;}
		Comple(T r,T i){real=r;imag=i;}
		Comple comple_add(Comple &c2);
        Comple comple_plue(Comple &c2);
        Comple comple_muse(Comple &c2);
        Comple comple_chu(Comple &c2);

		void display();
	private:
		T real;
		T imag;
};
template<class T>  //每一个成员函数的定义前,必须要声明类模板   
Comple<T> Comple<T>::comple_add(Comple<T> &c2)  //使用了模板的类,类名表示为“类模板名<虚拟类型参数>”
{
	Comple <T> c;

    c.real=real+c2.real;  
    c.imag=imag+c2.imag;  

	return c;
}

template<class T>  
Comple<T> Comple<T>::comple_plue(Comple<T> &c2)  
{
	Comple <T> c;
	
    c.real=real-c2.real;  
    c.imag=imag-c2.imag;  

	return c;
}
template<class T> 
Comple<T> Comple<T>::comple_muse(Comple<T> &c2)  
{
	Comple <T> c;
    c.real=real*c2.real-imag*c2.imag;  
    c.imag=imag*c2.real+c2.imag*real;
	return c;
}
template<class T>  
Comple<T> Comple<T>::comple_chu(Comple<T> &c2)  //使用了模板的类,类名表示为“类模板名<虚拟类型参数>”
{
	Comple <T> 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;
}
template<class T>  
void Comple<T>::display( )    
{  
    cout<<"("<<real<<","<<imag<<"i)"<<endl;  
}  
   
int main( )  
{  
    Comple<int> c1(2,1),c2(5,-2),c3; //定义对象时,用“类模板名<实际类型名>”形式   
    c3=c1.comple_add(c2);   
    cout<<"c1+c2=";  
    c3.display( );   
    Comple<double> c4(3.1,4.4),c5(5.4,-10.2),c6;  
    c6=c4.comple_plue(c5);   
    cout<<"c4-c5=";  
    c6.display( );  
    Comple<int> c7(2,1),c8(5,-2),c9;
    c9=c7.comple_muse(c8); 
	 cout<<"c7*c8=";
	c9.display();
   Comple<double> c10(3.1,4.4),c11(5.4,-10.21),c12;
    c12=c10.comple_chu(c11); 
	cout<<"c10/c11=";
	c12.display();
    return 0;  
} 
经验积累: 使用了模板的类,类名表示为“类模板名<虚拟类型参数>”
           每一个成员函数的定义前,必须要声明类模板   


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值