重载函数是c++代码可以存在函数名相同,但是内置参数个数或者是参数类型不同的函数,那么我们可以通过在调用这些函数时传入参数的不同,来调用不同的参数。而模板则不同,模板是通过我们在定义函数时,不给出函数的参数类型,以一个模板名代替,随后在函数调用的过程中,编译器可以通过对函数传入参数的类型的判定,来将模板名代替成参数所对应的类型。
重载函数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#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
模板函数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#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++重载函数和函数模板内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复