概述
重载函数是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)来代表各种参数,从而能够实现泛化,后面算法库里面所定义的函数,都是用到了函数模板。
最后
以上就是玩命纸鹤为你收集整理的C++重载函数和函数模板的全部内容,希望文章能够帮你解决C++重载函数和函数模板所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复