C 函数模板基本概念讲述
创始人
2024-06-22 22:21:44
0次

C++编程语言中的模板应用对于程序开发是一个非常重要应用。其中,C++函数模板能以同样的程序代码对不同类型的数据进行处理,其关键是将所处理的数据类型说明为参数,即类型参数化。

定义函数模板的一般形式是:

 

  1. template  
  2. 函数返回值类型 函数名(形参表)  
  3. {  
  4. 函数体  
  5. } 

 

说明:

(1)这里的类型参数名就是代表形形色色数据类型的通用参数名,它可以代表基本数据类型,也可以代表类。

(2)编写C++函数模板的方法是:

step 1:定义一个普通的函数,数据类型采用具体的普通的数据类型,仍以打印数组为例,先定义一个打印整型数组的普通函数:

  1. void printArray(int *array,int count)  
  2. {  
  3. for (int i=0;i
  4. cout<
  5. cout <
  6. } 

 

step 2:将数据类型参数化:将其中具体的数据类型名(如 int )全部替换成由自己定义的抽象的类型参数名(如T)。

step 3:在函数头前用关键字template引出对类型参数名的声明。这样就把一个具体的函数改造成一个通用的函数模板:

  1. template void printArray(T *array,int count)  
  2. {  
  3. for (int i=0;i
  4. cout<
  5. } 

 

 #t#(3)C++函数模板不是一个可以执行的函数,它只是对函数功能的程序描述,编译程序不为它生成执行代码。

(4)当编译程序遇到函数调用:

函数名 (实参表)时,自动将实参表中具体的数据类型替换函数模板中的类型参数,生成一个隐含的重载函数,该重载函数的程序代码与函数模板相同,类型则采用实参表中的具体数据类型。仍以前面所创建的打印数组C++函数模板为例,当程序出现函数调用语句printArray(a,aCount);时,编译程序将根据第一个实参a的数据类型int 匹配类型参数T,将函数模板中的所有T都替换成具体的数据类型int,从而产生一个具体的可执行函数的定义(这个过程称为模板实例化):

 

  1. void printArray(int *array,int count); 

 

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...