- 2
- 0
- 约1.14万字
- 约 20页
- 2016-10-22 发布于河南
- 举报
c模版
c++模版
C++模版使用
一.基本
以下的模版类型关键字class在新C++标准中建议使用typename代替.
1.1通用函数
template class Ttype re-type func-name(parameter list)
{
//body of funtion
}
例如:
template class X void swap(X a,X b)
{
X temp;
temp = a;
a = b;
b = temp;
}
#include iostream
using namespace std;
int main()
{
int i=10, j=20;
swap(i, j);
coutswapped i, j:ij\n;
}
1.2通用类
template class Ttype class class-name
{
//body of class
}
例如:
#include iostream
using namespace std;
const int SIZE = 10;
template class StackType class stack
{
StackType stack[SIZE];
int tos; //栈顶索引
public:
stack() { tos = 0;}
void push(StackType ob)
{
if(tos==SIZE)
{
coutstack is full.\n;
return;
}
stack[tos]=ob;
tos++;
}
StackType pop()
{
if(tos==0)
{
coutstack is empty.\n);
return 0;
}
tos--;
return stack[tos];
}
}
int main()
{
stackchar s1;
s1.push(a);
s1.push(b);
while(s1.tos)
{
coutpop s1:s1.pop()\n;
}
}
本质上,我认为模版实现了通用逻辑的定义,使算法独立于数据类型(由于实际程序一定要先给出数据类型,所以编译程序需要先解析模版,类似于宏命令).如上面的栈类,实际可能有整型栈或浮点型栈等.如果不使用模版,我们需要针对每个类型编一个栈类,其实操作又是完全一样.顺便说一下:STL就是一批高手精心设计的模版.
二.提高
2.1多类型模版
模版类型可以有多个,如:
template typename OrgType, typename DesType DesType covent(OrgType org)
{
return (DesType)org;
}
2.2重载
同类等类似,模版也可以重载.如:定义同名的函数重载函数模版或定义另一个同名但类型定义数不同的模版.
template void swapint(int a, int b)
{
int temp;
temp = a;
a =b ;
b = temp;
}
2.3默认类型
template class X=int class myclass
{
//body of class
}
2.4使用无类型参数
template class Stype, int size class stack
{
Stype stackBuffer[size];
... ...
}
调用时:
stackint , 20 intStack;
2.5typenaem和export关键字
您可能关注的文档
最近下载
- 一种水性双组份环氧底漆及其制备方法和应用.pdf VIP
- 2021版 客户侧电能计量装置通用设计要求 第2部分 低压用电客户电能计量装置.docx VIP
- 一种水性环氧涂层及其制备方法与应用.pdf VIP
- NK材料——材料分析测试方法.pptx VIP
- 一种水性环氧防腐底漆及其制备方法.pdf VIP
- 特种设备安全教育培训记录.pdf VIP
- 东芝CV330A封线分析和总结.docx VIP
- 父母赠予金钱合同协议书.docx VIP
- 2021版 客户侧电能计量装置通用设计要求 第1部分 10kV用电客户电能计量装置.docx VIP
- 2025年湖南工艺美术职业学院单招英语考试题库及答案解析.docx VIP
原创力文档

文档评论(0)