函数重载
2016-02-21 18:48
274 查看
函数重载(Function Overload) 用同一个函数名定义不同的函数 当函数名和不同的参数搭配时函数的含义不同 函数重载至少满足下面的一个条件: 参数个数不同 参数类型不同 参数顺序不同 函数返回类型不是函数重载的判断标准!!! int =0占位符也不是函数重载的判断标准!!! void myprintf(int a, int b) { printf("a:%d, b:%d\n", a, b); } void myprintf(int a, int b, int =0) { printf("a:%d, b:%d c:%d \n", a, b); return a; } 无法重载,传入两个参数时,无法确认调用哪个 void myprintf(int a, int b) { printf("a:%d, b:%d\n", a, b); } void myprintf(int a, int b, int) //必须输入三个参数 { printf("a:%d, b:%d c:%d \n", a, b); return a; } 两者可以编译通过,但是没有意义,因为传第三个参数也没用 void myprintf(int a, int b) { printf("a:%d, b:%d\n", a, b); } void myprintf(int a, int b, int c = 0) { printf("a:%d, b:%d c:%d \n", a, b); return a; } 无法重载,传入两个参数时,无法确认调用哪个 |
函数重载遇上函数默认参数 |
//当函数默认参数遇上函数重载会发生什么 /* int func(int a, int b, int c = 0) { return a * b * c; } int func(int a, int b) { return a + b; } int main() { int c = 0; c = func(1, 2); // 存在二义性,调用失败,编译不能通过 printf("c = %d\n", c); printf("Press enter to continue ..."); getchar(); return 0; } */ /* 编译器调用重载函数的准则 将所有同名函数作为候选者 尝试寻找可行的候选函数 精确匹配实参 通过默认参数能够匹配实参 通过默认类型转换匹配实参 |
相关文章推荐
- 文件操作
- 浅谈JavaScript的全局变量跟局部变量
- 怎样安装pip--python的包管理工具
- CIFilter (模糊图片)
- js常用功能工具库--Underscore.js
- os_core.c
- 默认参数和占位参数
- static静态变量分析
- 执行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”
- python的列表,元组和字典简单介绍
- 【小镇的技术天梯】Scapy学习日记(三)
- 操作系统(死锁)
- LeetCode OJ - Search for a Range
- 深入浅出-iOS的TCP/IP协议族剖析&&Socket
- Redis消息队列发布微博
- os_prio.c
- 1029. 旧键盘(20)
- javascript之猜数小游戏
- 一种简单的数字图像复制粘贴(Copy—Move)检测
- deque双向队列(转)