首页 > 作文

C++函数重载介绍与原理详解

更新时间:2023-04-04 13:50:32 阅读: 评论:0

目录
函数重载函数重载的概念函数重载的原理(名字修饰)总结:extern “c”

函数重载

函数重载的概念

函数重载是函数的一种特殊情况,c++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表必须不同。函数重载常用来处理实现功能类似,而数据类型不同的问题。

#include <iostream>using namespace std;int add(int x, int y){return x + y;}double add(double x, double y){return x + y;关于书的作文题目}int main(){cout << add(1, 2) << endl;//打印1+2的结果cout << add(1.1, 2.2) << endl;//打印1.1+2.2的结果return 0;}

注意:形参列表不同是指参数个数、参数类型或者参数顺序不同,若仅仅是返回类型不同,则不能构成重载。

函数重载的原理(名字修饰)

为什么c++支持函数重载,而c语言不支持函数重载呢?

我们知道,一个c/c++程序要运行起来都需要经历以下几个阶段:预处理、编译、汇编、链接。

在编译阶段会将程序中的每个源文件的全局范围的变量符号分别进行汇总。在汇编阶段会给每个源关于黄河的故事文件汇总出来的符号分高三复习策略配一个地址(若符号只是一个声明,则给其分配一个无意义的地址),然后分别诸葛恪生成一个符号表。最后在链接期间会将每个源文件的符号表进行合并,若不同源文件的符号表中出现了相同的符号,则取合法的地址为合并后的地址(重定位)。

c语言中,汇编阶段进行符号汇总时,一个函数汇总后的符号就是其函数名,所以当汇总时发现多个相同的函数符号时,编译器便会报错。而c++中进行符号汇总时,对函数的名字修饰做了改动,函数汇总出的符号不再单单是函数的函数名,而是通过其参数的类型长焦数码相机推荐和个数以及顺序等信息汇总出 一个符号,这样一来,就算是函数名相同的函数,只要其参数的类型或参数的个数或参数的顺序不同,那么汇总出来的符号也就不同了。

注:不同编译器下,对函数名的修饰不同,但都是一样的。

总结:

c语言不能支持重载,是因为同名函数没办法区分。而c++是通过函数修饰规则来区分的,只要函数的形参列表不同,修饰出来的名字就不一样,也就支持了重载。另外我们也理解了,为什么函数重载要求参数不同,和返回值没关系。

extern “c”

有时候在c++工程中可能需要将某些函数按照c的风格来编译,在函数前加“extern c”,意思是告诉编译器,将该函数按照c语言规则来编译。

注意:在函数前加“extern c”后,该函数便不能支持重载了。

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!

本文发布于:2023-04-04 13:50:31,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/e618dc7ba752c38948a34bbe91d637d6.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++函数重载介绍与原理详解.doc

本文 PDF 下载地址:C++函数重载介绍与原理详解.pdf

下一篇:返回列表
标签:函数   符号   参数   编译器
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图