码迷,mamicode.com
首页 > 编程语言 > 详细

C++函数模板

时间:2015-06-22 12:25:27      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

函数模板是通用的函数描述,也就是说,它们使用泛型来定义函数,其中的泛型可用具体的类型(如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

C++函数模板

标签:

原文地址:http://www.cnblogs.com/stemon/p/4593106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!