一、C++中的函数重载
什么是函数重载?
我的理解是:
(1)用一个函数名定义不同的函数;
(2)函数名和不同参数搭配时函数会有不同的含义;
举例说明:
1 #include <stdio.h>
2 #include <string.h>
3
4 int func(int x)
5 {
6 return x;
7 }
8
9 int func(int a, int b)
10 {
11 return a+b;
12 }
13
14 int func(const char* s)
15 {
16 return strlen(s);
17 }
18
19 int main(int argc,char* argv[])
20 {
21 printf("func(3) = %dn",func(3));
22 printf("func(5,6) = %dn",func(5,6));
23 printf("func("file cpp") = %dn",func("file cpp"));
24
25 return 0;
26 }
运行结果:
分析:
函数的重载在使用时,会根据传入的参数去选择执行对应的函数
总结:函数重载至少要满足下面的一个条件
(1)参数个数不同(2)参数类型不同(3)参数顺序不同二、C++中的函数默认参数举例说明
1 #include <stdio.h>
2
3 int func(int a, int b = 0)
4 {
5 return (a+b);
6 }
7
8 int main(int argc,char* argv[])
9 {
10 printf("func(3) = %dn",func(3));
11 printf("func(3,2)= %dn",func(3,2));
12
13 return 0;
14 }
运行结果:
二、当函数重载与默认参数同时出现时在刚刚开始学习的时候,分开学习函数重载和默认参数,两种情况都理解了。但是,突然想到如果这两个同时出现会会出现一个什么样的结果呢?实例代码:
1 #include <stdio.h>
2
3 int func(int a)
4 {
5 return (a);
6 }
7
8 int func(int a, int b = 0)
9 {
10 return (a+b);
11 }
12
13 int main(int argc,char* argv[])
14 {
15 printf("func(3) = %dn",func(3));
16 printf("func(3,2)= %dn",func(3,2));
17 printf("test for temp.cppn");
18 return 0;
19 }
写完了后,就在想代码执行后,到底会调用哪一个函数呢?
结果:
编译出错,错误信息:error: call of overloaded ‘func(int)’ is ambiguous printf("func(3) = %dn",func(3));分析:在C++的编译器中,如果出现了函数重载和函数带有默认参数时,编译是会出错的。总结:由于C++的语言特性,与C相比多了很多的特性,但是在这些的特性中又会存在一个相互冲突的部分,函数重载与函数默认参数就是其中一个。原文链接: https://www.cnblogs.com/zou107/p/5730784.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/237987
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!