模板:template

#include <iostream>

int add(int a,int b)
{
	return a + b;
}
float add(float a,float b)
{
	return a + b;
}
double add(double a,double b)
{
	return a + b;
}

//template是模板的意思,表示后面的函数是模板函数
//typename类型的名字,表示T表示的是一种类型,可以是任意类型
template <typename T>
T sub(T a, T b)
{
	return (T)(a - b);
}

//T是任何一种类型,N是任何一种类型, 可以相同,可以不同
template <typename T, typename N>
void f(T a, N b)
{
	std::cout<< a << "," << b <<"\n";
}

//模板函数必须调用之后才能确定有没有错。

void main()
{

	std::cout<<  sub<int>(4,3);
	//当我们调用int类型的sub函数的时候,编译器自动生成下面的函数:
	//int sub(int a,int b)
	//{
	//	return a - b;
	//}
	
	sub<double>(4.4, 3.3);
	//当我们调用double类型的sub函数的时候,编译器自动生成下面的函数:
	//double sub(double a,double b)
	//{
	//	return a - b;
	//}


	std::cout<<  sub((char)127,(char)30); 
	//当我们调用sub函数的时候,编译器自动生成下面的函数:
	//char sub(char a,char b)
	//{
	//	return a - b;
	//}

	//sub(127, (char)30);// 模板 参数“T”不明确
	sub<int>(127, (char)30);//第二个参数会转为int类型


	int arr[10];

	std::cout<<  sub(arr+10, arr);//0000000A
	

	f(1,2);//1,2
	f('a', 4.4);//a,4.4

	system("pause");

}

猜你喜欢

转载自blog.csdn.net/weixin_43374319/article/details/83989689