C++中的函数重载定义以及概念理解
1、什么是函数重载
C++中,在同⼀作⽤域下,形参列表不同的同名函数构成重载关系,且不会冲突。
2、重载实现的机制
C++代码在编译时函数的参数类型会添加函数名中,也就是说C++的函数名在编译时经历的换名的过程,借助这个⽅式实现了函数的重载。注意:由于C++和C函数的编译机制不同,所以C++代码不调⽤C编译器所编译出的函数。
3、extern “C” {}
功能是告诉C++编译器按照C语⾔的机制声明函数,这样C++中的代码就可以调⽤C编译编译出的函数了(C++⽬标⽂件与C的⽬标⽂件才能合并出可执⾏⽂件)。
4、重载和作⽤域
函数的重载关系⼀定发在同⼀作⽤域下,不同作⽤下的同名函数构成的是隐藏关系。
const的作用
5、重载函数的调⽤
当调⽤重载函数时,编译器会根据实参的数据类型选择合适的重载函数,实参与形参匹配情况有三种:
编译器到实参与形参完全匹配的函数,编译器会⽣成调⽤指令。
编译器到多个匹配函数,但没有⼀个最佳的,编译器会产⽣⼆义错误。绝⼤数情况下都编译器都能到⼀个最佳的匹配函数,但如果没有,编译器就会进⾏类型提升,这样备选函数中就可能有多个可调⽤的版本,然后⼆义性错误就产⽣了。
编译器不可调⽤的重载函数,会直接产⽣错误。
6、指针类型也影响函数的重载
C++函数的参数如果指针类型的,编译时就会在函数的末尾添加Px。
7、如果参数是指针或引⽤,是否加const也会影响函数的重载。
注意:函数重载是⾯向对象编程思想的多态(多种形态,根据实参情况对指令作出相
应的反应)的体现,具体调⽤哪个版本的函数是在编译期间就确定了,所以这种也叫
编译时多态。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论