c++模版.docVIP

  • 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关键字

文档评论(0)

1亿VIP精品文档

相关文档