C++中的函数重载定义以及概念理解

1、什么是函数重载

C++中,在同一作用域下,形参列表不同的同名函数构成重载关系,且不会冲突。

2、重载实现的机制

C++代码在编译时函数的参数类型会添加函数名中,也就是说C++的函数名在编译时经历的换名的过程,借助这个方式实现了函数的重载。

注意:由于C++和C函数的编译机制不同,所以C++代码不调用C编译器所编译出的函数。

3、extern “C” {}

功能是告诉C++编译器按照C语言的机制声明函数,这样C++中的代码就可以调用C编译编译出的函数了(C++目标文件与C的目标文件才能合并出可执行文件)。

4、重载和作用域

函数的重载关系一定发在同一作用域下,不同作用下的同名函数构成的是隐藏关系。

5、重载函数的调用

当调用重载函数时,编译器会根据实参的数据类型选择合适的重载函数,实参与形参匹配情况有三种:

  • 编译器找到实参与形参完全匹配的函数,编译器会生成调用指令。

  • 编译器找到多个匹配函数,但没有一个最佳的,编译器会产生二义错误。绝大数情况下都编译器都能找到一个最佳的匹配函数,但如果没有,编译器就会进行类型提升,这样备选函数中就可能有多个可调用的版本,然后二义性错误就产生了。

  • 编译器找不可调用的重载函数,会直接产生错误。

6、指针类型也影响函数的重载

C++函数的参数如果指针类型的,编译时就会在函数的末尾添加Px。

7、如果参数是指针或引用,是否加const也会影响函数的重载。

注意:函数重载是面向对象编程思想的多态(多种形态,根据实参情况对指令作出相
应的反应)的体现,具体调用哪个版本的函数是在编译期间就确定了,所以这种也叫
编译时多态。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值