模板(Template)指C++程序设计语言中采用类型作为参数的程序设计,支持通用程序设计。
下面以不使用函数模板,和使用函数模板来实现同一功能的示例:
例子:实现计算一个数的幂次方的函数power,接受正幂次方数,如果是负幂次方数,就让结果等于0.
1.不使用模板
如果不使用函数模板,对于需要实现的功能相同,但参数的数据类型却不同的情况,则需要定义多个不同数据类型的函数:
//对于实现 整数类型 的幂次方函数
int power(int base,int exponent)
{
int result = base;
if (exponent == 0) return (int)1;
if (exponent <0 ) return (int)0;
while(--exponent)
{
result *=base;
}
return result;
}
//对于实现 长整型类型 的幂次方函数
long power(long base,int exponent)
{
long result = base;
if (exponent == 0) return (long)1;
if (exponent <0 ) return (long)0;
while(--exponent)
{
result *=base;
}
return result;
}
如果还要计算float、double等等类型的幂次方,则还需要定义多个这样的函数,比较麻烦,不好维护。
2.使用函数模板
template<class T> //此次没有分号
T power(T base,int exponent)
{
T result = base;
if (exponent == 0) return (T)1;
if (exponent <0 ) return (T)0;
while(--exponent)
{
result *=base;
}
return result;
}
//调用:
#include <iostream>
using namespace std;
int main()
{
int a =power(2,4);
long b = power(100L,3);
cout << "a = "<<a<<endl;
cout << "b = "<<b<<endl;
return 0;
}
结果:
a = 16
b = 1000000