C++函数模板基本概念讲述

开发 后端
我们在这篇文章中为大家接受了C++函数模板的定义方法,以及各种应用方式,希望这里的内容能帮助大家充分掌握这方面的应用技巧。

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

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

 

  1. template <class 类型参数名1 ,class 类型参数名 2,…> 
  2. 函数返回值类型 函数名(形参表)  
  3. {  
  4. 函数体  

 

说明:

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

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

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

  1. void printArray(int *array,int count)  
  2. {  
  3. for (int i=0;i<count;i++)  
  4. cout<<array[i]<<" ";  
  5. cout <<endl;  

 

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

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

  1. template <class T>void printArray(T *array,int count)  
  2. {  
  3. for (int i=0;i<count;i++)  
  4. cout<<array[i]<<" ";  

 

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

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

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

 

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

 

责任编辑:曹凯 来源: 博客园
相关推荐

2010-02-01 14:07:12

C++多态性

2010-02-04 13:56:24

C++类模板特化

2010-02-03 14:36:47

C++仿函数

2010-02-04 10:08:00

C++静态成员函数

2023-12-13 10:51:49

C++函数模板编程

2010-02-03 13:22:07

C++时间

2010-02-05 12:57:20

C++ kdevelo

2010-02-02 10:33:22

C++引用

2010-02-03 11:11:18

C++类型转换

2010-02-02 13:41:01

C++类继承

2010-02-02 15:30:05

C++ include

2010-02-01 17:24:41

C++循环语句

2010-02-04 14:01:43

C++非类型类模板参数

2023-12-24 12:56:14

C++函数语言

2010-02-06 14:04:58

C++内存使用机制

2010-01-15 13:30:50

VB.NET Prog

2010-02-06 09:53:26

C++ void

2010-02-04 17:39:48

C++字符串类型

2010-02-06 15:58:10

C++集合初始化

2010-02-04 17:32:43

C++中C风格字符串
点赞
收藏

51CTO技术栈公众号