C++模板的定制一:定制函数模板

原创 2001年10月27日 10:35:00

前言<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

       C++模板是C++的扩展,模板为C++注入了新的活力。C++模板分为函数模板和类模板。C++模板对于大多数C++程序员并不陌生。C++模板有一定的定制特性。

C++模板的定制一:定制函数模板

       函数模板的基本语法如下:

       template <typename T>

       T fun(T t1,…)

{

       return t1;

}

       T可以是任何类型,但是当你想为某个特殊的类型做不同的处理时你该怎么办呢?如:

template <typename T>

T max(T t1,T t2,T t3)

{

       T temp=t1;

       if(temp<t2) temp = t2;

       if(temp<t3) temp = t3;

       return temp;

}

这个函数可处理三个相同类型的元素并取出其最大值。正常情况下这是对的,但是当有如下的调用发生时就不一定了。

char array1[]=”winmain”;

char array2[]=”yuankai”;

char array3[]=”main”;

char *cp = max(array1, array2, array3);

       由于T被做指针传入时,max函数只是比较了指针(地址)的大小而输出最大的指针,这可能不是我们想要的结果。要解决这问题但又要保留原有的函数处理能力我们就可以使用定制函数模板,示例如下:

char * max(char* s1,char* s2,char* s3)

{

              char *cp=s1;

       if (strcmp(cp,s2)<0) cp = s2;

              if (strcmp(cp,s3)<0) cp = s3;

       return cp;

}

我们完成一个max函数的定制,定制类型为char*。这样我们再有以下调用则可得出正确的结果。

char *cp = max(array1, array2, array3);

不是吗?我们的输出结果正是我们想要的,通过定制函数模板可完成特定的功能而又可使用其原有的功能,这不是很好吗?了解定制函数模板使我们在使用函数模板时有更大的灵

活性,给我们更大更自由的空间。

       文章写的仓促,有错别字或错误请大家多批评指出。欢迎和大家交流。如果大家觉的还可以我会继续写下出(-----袁凯-----)

C++模板的定制三:部分定制C++类

C++模板的定制三:部分定制C++类       类模板的多参语法如下:       template        class classname{       ……};T可以是任何类型,上一节我们...
  • winmain
  • winmain
  • 2001年10月27日 19:06
  • 605

C++ - 类模板的 部分定制(partial specializations) 和 定制成员(specialization members)

类模板的 部分定制(partial specializations) 和 定制成员(specialization members) 本文地址: http://blog.csdn.net/carol...
  • u012515223
  • u012515223
  • 2013年12月11日 10:00
  • 2252

5.以表格型主细表为模板定制模块:会计科目管理

1.业务需求:实现对会计科目的一个维护模块,该模块涉及到两个表,科目类别表和科目信息表的逻辑结构和物理结构如下: 2.打开模块构件,新增一个模块,模块构件的属性设置界面如下: 3.打开界面元素构件...
  • iPlatForm
  • iPlatForm
  • 2016年02月11日 12:00
  • 687

vs2010定制C++的项目模板

创建自定义向导 Visual Studio 2010 其他版本 1(共 1)对本文的评价是有帮助 - 评价此主题 V...
  • davidsu33
  • davidsu33
  • 2014年10月30日 23:10
  • 1695

C++类模板中的模板函数

在C++中类模板中可以嵌套函数模板,但是在使用时候有些注意事项如下: 一、如果类模板中参数为template,在函数模板中,函数的不同模板名字是可以重载的,如template void assign...
  • u010585135
  • u010585135
  • 2015年01月24日 10:05
  • 1186

Excel导入导出(二)导入模版定制

相关jar包如图 Student.xml学生Excel模版(一)
  • yangfan5314
  • yangfan5314
  • 2015年06月03日 16:39
  • 254

C++中模板函数及模板类的使用(下)

在使用模板类时,一般会将类定义及成员变量和成员函数的声明放在h头文件中,而将成员函数的定义放在cpp执行文件中。在编译程序时可能会出现如下错误提示 errorLNK2019: 无法解析的外部符号"pu...
  • hou09tian
  • hou09tian
  • 2017年04月05日 23:38
  • 935

c++调用基类的构造函数(模板类)

代码如下 #include #include #include using namespace std; template class Base { public: Base(...
  • linger2012liu
  • linger2012liu
  • 2014年04月30日 19:06
  • 4360

C++模板:函数模板、类模板、模板与继承

C++模板:描述             C++提供一种模板的机制来减少代码重复。比如:对于同一样函数使用不同的数据类型,int,double,char等。C++模板属于“元编程”的范畴。 C++ 模...
  • xiaoding133
  • xiaoding133
  • 2013年09月13日 23:09
  • 37144

C++模板的特化详解(函数模版特殊,类模版特化)

参照 小解C++模板特化 C++模板的特化 模板的全特化与偏特化 模版与特化的概念函数模版与类模版C++中模板分为函数模板和类模板 函数模板:是一种抽象函数定义,它代表一...
  • gatieme
  • gatieme
  • 2016年03月22日 14:40
  • 8427
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++模板的定制一:定制函数模板
举报原因:
原因补充:

(最多只允许输入30个字)