C++模板
来源:互联网 发布:java linux cpu使用率 编辑:程序博客网 时间:2024/06/06 06:56
原创 http://blog.sina.com.cn/u/2312748742
一、模板的概念:
模板是实现类属机制的一种工具,它的功能非常强,它是无约束类属机制和约束类属机制的集合。它可以让用户构造模板函数。是STL(标准模板库),是C++的一种扩展。是提供一种重用源代码的一种方法。从而实现泛型编程,即不用管事intchar等类型。
模板是实现类属机制的一种工具,它的功能非常强,它是无约束类属机制和约束类属机制的集合。它可以让用户构造模板函数。是STL(标准模板库),是C++的一种扩展。是提供一种重用源代码的一种方法。从而实现泛型编程,即不用管事intchar等类型。
二、模板分为两种:函数模板和类模板,格式如下:
函数格式:template <typename 形参名,typename形参名>反回类型函数名(参数列表){函数体}
类模板格式:template<typename 函数格式:template <typename 形参名,typename形参名>
三、因为模板都是声明的,所以实现的函数等都应放在 .h文件中而不是放在 .cpp文件中。
四、例子:
1)函数模板,新建 test.h文件
template<classmyType,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(MyTypeelem)
{
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;
if(!ary.Get(temp))
{
cout<<"读取失败"<<endl;
}
cout<<temp<<endl;
return 0;
}
- C++-模板
- C++-模板
- C++:模板
- C++:模板
- C++:模板
- 模板 (C++)
- C ++ 模板
- C ++ 模板
- 【C++】模板
- c++----------模板
- C++--------------------------------------------模板
- c++--模板
- C++:模板
- 【基础C&C++】模板
- 【c/c++】类模板
- 【C/C++】模板类
- 【c++】模板和模板类
- C/C++:函数模板与类模板
- 数据库sql server简单的几条命令
- vc 通过ado写入数据库
- 顺序容器:vect list deque比较
- SNMP原理 作用 傻瓜式描述 通俗描述--perfect
- 关联容器:set multiset map multi…
- C++模板
- Android Studio V0.2.x For Windows下载地址
- vector当使用at时抛出异常时进行捕…
- ARM335X参考手册 中文
- 如何单步调试 dll 文件里面函数
- linux 信号
- 2013年04月10日
- linux 管道
- ios 程序在后台运行