为什么C++支持函数重载,C语言不支持重载?

本文探讨了C++支持函数重载而C语言不支持的原因,关键在于C++在链接过程中对函数名进行修饰,以区分重载函数。同时,文章介绍了C/C++程序的编译和链接过程,以及如何创建和调用静态库。C程序可以通过extern "C"调用C++实现的静态库,反之亦然。
摘要由CSDN通过智能技术生成


 
//函数重载:函数名相同,参数表不同的函数,参数表不同包括:参数的个数不同,参数类型不同,参数类型的顺序不同,函数重载主要是解决一种功能相同,但是变量类型的问题
 
 
两个为什么:为什么C++支持重载?为什么C语言不支持重载?
在C/C++程序中,程序的编译过程是一样的,但是在程序的链接过程C和C++稍有不同,主要在于形成符号表的过程,C程序中,形成符号表的过程并不会对函数名进行修饰,而C++程序在形成符号表的过程中会对函数名进行修饰,修饰的标准是根据函数名即长度以及传入的参数的先后顺序的不同而不同,因此,在C++中当执行函数调用的代码的时候,程序去符号表查找函数的地址时,因为函数重载的参数表不同,所以C++的符号表中这些重载的函数名的函数名修饰是不一样的,所以找到的函数地址自然是不一样的,因此,C语言不支持重载,而C++支持重载
 
C/C++程序的编译和链接:
编译:
1.   预处理:头文件的包含(展开),注释的删除,宏替换,将test.c文件生成test.i文件
2.   编译:语法分析与检查,汇总符号,将C代码转换成汇编代码,将test.c文件转换生成test.s文件
3.   汇编:将汇编代码转换生成二进制的机器指令,将test.c转换生成test.o文件(目标文件)
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值