C++重载函数和函数模板

重载函数是c++代码可以存在函数名相同,但是内置参数个数或者是参数类型不同的函数,那么我们可以通过在调用这些函数时传入参数的不同,来调用不同的参数。而模板则不同,模板是通过我们在定义函数时,不给出函数的参数类型,以一个模板名代替,随后在函数调用的过程中,编译器可以通过对函数传入参数的类型的判定,来将模板名代替成参数所对应的类型。


重载函数

#include<iostream>
void print(int a, int b)
{
	std::cout << "two parameter"<<std::endl;
}
void print(int a)
{
	std::cout << "one parameter"<<std::endl;
}
void print(int a[])
{
	std::cout << "it is array"<<std::endl;
}
void print(double a, double b)
{
	std::cout << "double"<<std::endl;
}
int main()
{
	int array[1] = {0};
	print(2, 4);
	print(3);
	print(1.1, 2.2);
	print(array);
	print(array[0]);
}

运行结果:

two parameter
one parameter
double
it is array
one parameter


模板函数

#include<iostream>
template<typename T1,typename T2>
T1 Add(T1 x, T2 y)
{
	return x + y;
}
template<typename T>
T max(T x, T y)
{
	return x>y?x:y;
}
int main()
{
	int a = 1,a1;
	double b = 2.1,b1;
	char c = 'a';
	a1 = Add(a, c);
	b1 = Add(b, a);
	std::cout <<"Add  :"<< a1 << " " << b1 << " "<<std::endl;
	int x = max(1, 3);
	double y = max(3.2, 1.1);
	char z = max('a', 'c');
	std::cout << "max  :" << x << " " << y << " " << z;


}

运行结果:

Add  :98 3.1
max  :3 3.2 c


总结:两者本质区别是重载函数是多个相同名字的函数通过参数个数或者是参数类型的不同,让编译器通过传参时得到判断,是多个函数;而函数模板是通过定义一个模板,以一个自己随意定义的(上文是T)来代表各种参数,从而能够实现泛化,后面算法库里面所定义的函数,都是用到了函数模板。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值