专业编程基础技术教程

网站首页 > 基础教程 正文

C++|泛型程序设计:函数模板(c++ 泛型实现原理)

ccvgpt 2024-08-03 12:31:48 基础教程 35 ℃

函数模板和类模板可以使程序员只需编写一个单独的代码段,就可表示一整套称为函数模板特化的相关(重载)函数或是表示一整套称为类模板特化的相关的类。这种技术称为泛型程序设计(generic programming)。

如果一组重载函数仅仅是参数的类型不一样,程序的逻辑完全一样,那么这一组重载函数可以写成一个函数模版。

C++|泛型程序设计:函数模板(c++ 泛型实现原理)

所谓的函数模版就是实现类型的参数化(泛型化),即把函数中某些形式参数的类型定义成参数,称为模版参数。在函数调用时,编译器根据实际参数的类型确定模版参数的值,生成不同的模版函数。

一 般的定义形式:

template<类型形式参数表>

返回类型 FunctionName(形式参数表)

//函数定义体

类型形式参数表可以包含基本数据类型,也可以包含类类型(需加前缀class或typename),表示可以是任何“内置类型或用户自定义类型”。用来指明函数实参的类型、函数返回值类型及声明函数中的变量。

template<class T>

T max(T a, T b)

{ return a>b ? a : b;}

假设我们需要一个计算数值幂次方的函数,名为power。该数值可以是整型、长整型或实型。我们只接受正幂次方,如果是负幂次方,结果为0。

“class”并不一定表示C++的class,它也可以是一个普通的类型。<class T>只不过是表示T是一种类型,而此类型将在调用此函数时才给予。

模板函数和重载是密切相关的。从函数模板产生的函数模板化都具有相同的名字,所以编译器使用重载的方式来调用适当的函数。

Tags:

最近发表
标签列表