C++模板

一、模板的概念:
模板是实现类属机制的一种工具,它的功能非常强,它是无约束类属机制和约束类属机制的集合。它可以让用户构造模板函数。是STL(标准模板库),是C++的一种扩展。是提供一种重用源代码的一种方法。从而实现泛型编程,即不用管事int char等类型。
二、模板分为两种:函数模板和类模板,格式如下:
函数格式:template <typename 形参名,typename 形参名>  反回类型函数名(参数列表){函数体}
类模板 格式:template<typename  形参名,typename  形参名…>    class  类名{}
三、因为模板都是声明的,所以实现的函数等都应放在 .h文件中而不是放在 .cpp文件中。
四、例子:
1)函数模板,新建 test.h文件
template<class myType,class myType1>
myType1 GetMax(myType a,myType1 b)
{
return a>b?a:b;
}
新建test.cpp文件
#include <iostream.h>
#include "test.h"
int main ()
{

cout<<GetMax(22,45.4)<<endl;
return 0;
}
2)类模板的实现(实现FIFO)
因为同样变成是类模板的声明,是编译器在编译时才进行实例化的,所以类的实现要放在.h文件中。
test.h文件:
//类模板的声明
template <class MyType>
class CMyAry
{
private:
MyType ary[10];
public:
CMyAry() //第一种直接在类定义里实现其函数功能,建议尽量不要使用这种方式,不够清晰
{
for (int i=0;i<10;i++)
{
ary[i]=NULL;
}
}
~CMyAry()
{

}
bool Put(MyType elem);
bool Get(MyType &elem);
};

//这些也是声明,声明类模板的类实现,所以也是放在.h文件而不能放在.cpp中
template<class MyType>
bool CMyAry <MyType>::Put(MyType elem)
{
for (int i=0;i<10;i++)
{
if (ary[i]==NULL)
{
ary[i]=elem;
return true;
}
}
return false;
}

template<class MyType>
bool CMyAry<MyType>::Get(MyType &elem)
{
for (int i=0;i<10;i++)
{
if (ary[i]!=NULL)
{
elem=ary[i];
return true;
}
}
return false;
}


新建.cpp文件代码如下:
#include <iostream.h>
#include "test.h"
int main ()
{
// CMyAry<int> ary;
CMyAry<float> ary;
if(!ary.Put(80.2))
    {
cout<<"存值失败"<<endl;
    }
if(!ary.Put(20.5))
    {
cout<<"存值失败"<<endl;
    }
    float temp;
if(!ary.Get(temp))
{
cout<<"读取失败"<<endl;
}
cout<<temp<<endl;
return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值