函数模板的应用

利用函数模板,可以适应传递参数的多种数据类型。既可以实现重载函数的多态性,又能避免写多个同名函数的繁琐庞杂

例:定义一个模板函数cad,实现两个参数数的相加或者字符串的连接。

#include <iostream>
#include<string>
template<class N>N cad(N a1, N a2)
{
	return a1 + a2;
}

int main()
{
	double i;
	int m;
	double n;
	std::string s;
	i = cad(10.25, 12.1);
	m = cad(1, 7);
	n = cad<double>(1, 7.6);
	s = cad<std::string>("hello,", "world!");
	std::cout << i << std::endl;
	std::cout << m << std::endl;
	std::cout << n << std::endl;
	std::cout << s << std::endl;
	return 0;
}

运行结果如图:

在本例当中,申明了一个模板函数cad。当参数为double时,两个double类型相加(如结果i); 参数为int时,两个int类型的参数相加(如结果m)。当传递的参数为string类型时候,实现了两个字符串的连接。

在函数模板中的参数类型相同,如本例中的cad,参数类型均为N,则可以正常运行;如果参数类型不一致,则会出现编译错误。例如本例中的cad(1,7.6),如果没有加入double类型标识就会出错。而cad<double>(1,7.6)明确的标识了模板类型为double.对参数进行强制转换统一以后再进行计算。cad<std::string>("hello,", "world!");也是一样的。强制将指针转化为string类型则可以使用+作为连接符。

猜你喜欢

转载自blog.csdn.net/qq_24499417/article/details/104667206