C++程序员一定要知道但是却很少用到的知识点之一

1、函数重载
在同一个作用域下,函数名相同,参数列表不同的函数,构成重载关系。
2、代码在编译时会把函数的参数类型添加到函数名中,借助这个方式来实现函数重载,也就是说C++函数在编译期间经历了换名的过程,因此,C++代码不能调用C函数(C函数时C语言编译器出的函数)
3、extern “C”{}
告诉C++编译器按照C语言的方式声明函数,这样C++就可以调用C编译器编译出的函数了(C++目标文件可以与C目标文件合并生辰可执行程序)
如果C想调用C++编译出的函数,需要将C++函数的定义用extern“C”
注意:如果两个函数名真的一样,一定会冲突
4、重载和作用域
函数的重载关系发生在同一作用域下,不同作用域下的同名函数,构成隐藏关系

5、重载解析
当调用函数时,编译器根据实参的类型和形参的匹配情况,选择一个确定的重载版本,这个过程叫重载解析
实参的类型和形参的匹配情况有三种:
1、编译器找到与实参最佳的匹配函数,编译器将生成调用代码
2、编译器找不到匹配函数,编译器将给出错误信息
3、编译器找到多个匹配函数,但没有一个最佳的,这种错误叫二义性
在大多数情况下编译器都能立即找到一个最佳的调用版本,但如果没有,编译就会进行类型提升,这样备选函数中就可能具有多个可能调用的版本,这样就可能产生二义性错误
6、确定重载函数的三个步骤
1、候选函数
函数调用的第一步就是确定所有可调用的函数的集合(函数名、作用域),该集合中的函数就是候选函数
2、选择可行函数
从候选函数中选择一个或多个函数,选择的标准是参数个数相同,而且通过类型提升实参可被隐式转换成形参
3、寻找最佳匹配
优先每个参数都完全匹配的方案,其次参数完全匹配的个数,再然后是浪费内存的字节数
7、指针类型也会对函数的重载造成影响
C++函数的形参如果是指针类型,编译时函数名中会追加 Px

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值