C++开发知识之函数重载

slime2021-09-07 11:21

本贾尼·斯特劳斯特卢普,与1979年4月份贝尔实验室的本贾尼博士在分析UNIX系统分布内核流量分析时,希望有一种有效的更加模块化的工具。1979年10月完成了预处理器Cpre,为C增加了类机制,也就是面向对象,1983年完成了C++的第一个版本,C with classes也就是C++。

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、编译器找到多个匹配函数,但没有一个最佳的,这种错误叫二义性。

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

为了帮助大家深入了解C++开发技术,快速入门C++,小编向大家推荐这门公开课,C++快速入门及实战详解点击图片立即领取

C++快速入门及实战详解

课程介绍

本课程内容主要涵盖智能物联的发展及应用;C++入门学习:面向对象、类;C++应用实践-贪吃蛇等方面

智能物联的发展及应用

C++快速入门

C++应用实践——贪吃蛇、机器人

以上就是小编为大家整理的“C++开发知识之函数重载”一文,更多相关信息尽在C/C++教程频道。

相关推荐:

2021如何成为更值钱的数据型人才,课程特惠0元领

产品经理如何做好产品规划

AI入门必备资料,人工智能必读书单

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
算法刷题核心能力提升营