C/C++培训
达内IT学院
400-996-5531
模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模板可以分为两类,一个是函数模板,另外一个是类模板。
1、函数模板的写法:
函数模板的一般形式如下:
Template <class 或者也可以用typename T>
返回类型 函数名(形参表)
{// 函数定义体 }
说明: template 是一个声明模板的关键字,表示声明一个模板关键字class 不能省略,如果类型形参多于一个 ,每个形参前都要加class < 类型 形参表> 可以包含基本数据类型可以包含类类型.
注意:每个模板函数前面都要加上“Template <class 或者也可以用typename T> ”这一行。
//在template语句与函数模板语句之间不允许有别的语句;
请看以下程序:
//mian.cpp
#include <iostream>
// 声明一个函数模版, 用来比较输入的两个相同数据类型的参数的大小,class 也可以被typename 代替,
//T 可以被任何字母或者数字代替。
template <class T>
T max(T &x,T &y)//主要必须是参数引用,不能是 T min(T x,T y)
{
if (a>b)
{
return a;
}
return b;
}
void main( )
{
int i1 = 3,i2=5;
char c1='a',c2='b';
double d1=0.35,d2 = 0.2;
cout<<"for int最大的为:"<<max(i1,i2)<<endl;
cout<<"for char最大的为:"<<max(c1,c2)<<endl;
cout<<"for double最大的为:"<<max(d1,d2)<<endl;
}
2.、类模板的写法:
定义一个类模板:
Template < class 或者也可以用typename T >
class 类名{
};
说明:其中,template 是声明各模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个。 每个前面要有class或typename,用逗号隔开
注意:每个模板类数前面都要加上“Template <class 或者也可以用typename T> “这一行。
例如:定义一个类模板:
// template.h
#paragm once
template <typename T1,typename T2>
class myClass{
private :
T1 I;
T2 J;
public :
myClass(T1 a, T2 b);//若成员函数中使用了模板,则此函数需要在类体外定义!!!
void show();
};
//构造函数
template <typename T1,typename T2>
myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b){}
void show();
template <typename T1,typename T2>
void myClass<T1,T2>::show()
{
cout<<"I=" <<I<<", J=" <<J<<endl;
}
注意:每个模板类的成员函数前都必须加上模板声明template <typename T1,typename T2> ,然后接下来命名类似于普通类,但必须加上类参数myClass<T1,T2>
// run.cpp
#include "template.h"
#include <iostream>
using namespace std;
void main()
{
//什么一个类的对象类似于普通类对象声明,但必须实例化类模板参数,如:myClass<int ,int > ,其余的调用函数方法跟普通类一样
myClass<int,int>class1(1,2);
class1.show();
myClass<char,char>class2('a','b');
class2.show();
}
版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved