您的位置:首页 > 编程语言 > C语言/C++

C++函数模板

2015-06-22 12:00 323 查看
函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型(如int或者double)替换。通过将类型作为参数,传递给模板,可使编译器生成该类型的函数。

函数模板允许以任意类型的方式来定义函数。例如,可以这样建立一个交换函数的模板:

template <typename T>
void Swap(T &a, T &b)
{
T temp;
temp = a;
a = b;
b = temp;
}


  模板并不创建任何函数,而只是告诉编译器如何定义函数。上面代码的关键字typename和关键字class都是可以的,但是推荐使用关键字typename。

要让编译器知道程序需要一个特定形式的交换函数,只需要在程序中使用Swap()函数即可。编译器将检查所使用的参数类型,并生成相应的函数。

#include <iostream>
template <typename T>
void Swap(T &a, T &b);

using namespace std;

int main()
{
int i = 10;
int j = 20;
Swap(i, j);
cout << "i = " << i << endl;
cout << "j = " << j << endl;

double x = 24.5;
double y = 30.7;
Swap(x, y);
cout << "x = " << x << endl;
cout << "y = " << y << endl;

return 0;
}

template <typename T>
void Swap(T &a, T &b)
{
T temp;
temp = a;
a = b;
b = temp;
}


函数模板不能缩短可执行程序,如上面的代码,最终仍将由两个独立的函数定义,并且最终的代码并不包含任何的模板,而只包含了程序生成的实际函数。使用模板的好处是,它使生成多个函数定义更简单、更可靠。

但是:同一个函数模板,只适用于函数的参数个数相同而类型不同,且函数体相同的情况,如果参数的个数不同,则不能用该函数模板。但是可以重载的函数模板。
http://www.cnblogs.com/lidan/archive/2012/02/04/2338677.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: