您的位置:首页 > 职场人生

面试归来6--模板函数 函数模板 模板类 类模板 区别

2010-03-26 14:31 295 查看
1 记住一个实例
template<class类型形参表>
返回类型 函数名(形参表)
{//函数定义体 }

template <class T> T min(T x,T y);

////////////////////////////////
#include<iostream.h>
template<class T> /*函数模板声明*/
T min(T x , T y)
{if(x<y ) return x;
else return y;}
void main( )
{ int n1=2,n2=10;
double d1=1.5,d2=5.6;
cout<<”较小整数:”<<min(n1,n2)<<endl;//实例化 min模板函数比较两整数
cout<<”较小实数:”<<min(d1,d2)<<endl;// 实例化min模板函数比较两双精度数
}
函数模板min(x,y)
模板函数min(n1,n2)int型
模板函数min(d1,d2) double型

类模板
template<class类型形参表>
class类名{
//类定义......
};

例如:定义一个类模板:
template<classT1,classT2>
class myclass{T1 I;//
T2 j;//
Public:
Myclass(T1 a,T2 b)//
{I=a; j=b;}
void show( )
{cout<<”I=”<<”j=”<<j<<endl;}};
在主函数中若定义了一模板类 myclass<int,double>并且声明一个类对象ob1(1  引用语句:myclass<int,double >ob(2,0.1);注意:myclass<int,double>实例化了类模板,即将T1实例为int 类型,T2为double 类型,这样我们就得到了一个模板类.然后就可以定义类对象ob1并初始化.
还可以定义另一个模板类如: myclass<double ,char>
可通过下图表示类模板与模板类的关系
类模板myclass<T!,T2>
模板类myclass(int,double)
模板类nyclass<double,char>
总结:函数模板是一类函数的抽象,代表了一类函数,这一类函数具有相同的功能,代表一 具体的函数,能被类对象调用,而函数模板绝不能被类对象调用.
类模板是对类的抽象,代表一类类,这些类具有相同的功能,但数据成员类型及成员函数返回类型和形参类型不同.模板类是类模板类的实例.代表一具体的类,可以定义类对象 ,而不能给类模板定义对象.


http://blog.csdn.net/rufeng18/archive/2007/12/01/1910461.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: