第四课-函数的升级(下)
来源:互联网 发布:百度大数据彩票预测 编辑:程序博客网 时间:2024/04/30 16:57
重载的概念
重载:同一标识符在不同的上下文有不同的意义;
C++中的函数重载
(1)函数重载
用同一个函数名定义不同的函数;
当函数名和不同的参数搭配时函数的意义不同;
int func(int x)
{
return x;
}
int func(int a,int b)
{
return a+b;
}
int func(char* s)
{
return strlen(s);
}
函数重载至少满足下面的一个条件:
(1)参数个数不同;
(2)参数类型不同;
(3)参数顺序不同;
当函数默认参数遇上函数重载会发生什么呢?
int func(int a,int b,int c=0)
{
return a+b+c;
}
int func(int a,int b)
{
return a+b;
}
int main()
{
fun(1,2); //哪一个函数被调用?会出现二意性,使用参数默认时,不要使用函数重载,反过来也一样。
return 0;
}
编译器调用重载函数的准则
(1)将所有同名函数作为候选者;
(2)尝试寻找可行的候选函数;
精确匹配实参;
通过默认参数能够匹配实参;
通过默认类型转换匹配实参;
(3)匹配失败
最总寻找到的可行候选函数不唯一,则出现二义性,编译失败。
无法匹配所有的候选者,函数未定义,编译失败。
函数重载的注意事项
(1)重载函数在本质上是相互独立的不同函数;
(2)重载函数的函数类型是不同的;
(3)函数返回值不能作为函数重载的依据;与返回值没有半毛钱关系。
函数重载是由函数名和参数列表决定的。
下面程序的哪一个函数将被调用?
int func(int a)
{
return a;
}
int func(int a,int b)
{
retunr a+b;
}
int func(const char* s)
{
return strlen(s);
}
typedef int(*PFUNC)(int a);
int main()
{
PFUNC p = func;
p(1); //哪一个函数将会被调用?
return 0;
}
函数重载与函数指针
(1)当使用重载函数名对函数指针进行赋值时:根据重载规则挑选与函数指针参数列表一致的候选者;严格匹配候选者的函数类型与函数指针的函数类型。
C++和C的相互调用
(1)在项目中融合C++和C代码是实际工程中不可避免的;
(2)虽然C++编译器能够兼容C语言的编译方式,但C++编译器会优先使用C++的方式进行编译;
(3)利用extern关键字强制让C++编译器对代码进行C方式编译。
- 第四课-函数的升级(下)
- 函数的升级(下)
- 函数的升级(下)
- 3、函数的升级(下)
- 函数的升级(下)-函数的重载
- 4 . 函数升级(下)
- 第三课-函数的升级(上)
- 函数的升级(上)
- 函数的升级(上)
- PHP第四课 了解常用的函数
- C++学习笔记8 C++函数的升级 下
- Swift第四课 函数
- 【五】C++函数的升级(二)
- 函数的升级(上)
- 3.函数的升级
- 三、函数的升级
- 【四】C++函数的升级(一)--内联函数
- C++基础学习笔记----第四课(函数的重载、C和C++的相互调用)
- 基于Openfire Smack开发即时通讯应用、Spark安装,注册,登录,退出登录(二)
- System.setProperty(keyword,value)的两种方式
- Android 横竖屏切换 引起的1s左右黑屏
- JS:地铁报站
- js操作cookie方法(用继承方式写)
- 第四课-函数的升级(下)
- windbg的symfix命令
- android二维码开源项目zxing编译 命令行编译
- django静态文件url处理
- BZOJ2190: [SDOI2008]仪仗队
- Java synchronized与Lock对象锁
- 使用线性布局和相对布局做一个国际化的手机信息页面
- SSDT Hook技术详解与应用
- C#笔记整理(五)