函数重载--C++支持重载而C不支持

什么是重载?

允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。

什么是函数重载?

  函数的重载:
在同一个作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同。

问题来了,为什么C语言不支持重载,C++支持重载呢?

先来看看编译的整个过程:1、预处理(生成.i文件)→2、编译(生成.s文件,里面是汇编语言)→3、汇编(生成.o文件,二进制文件)→链接(生成.exe文件)

点击生成的.exe文件,就可以运行程序了。

讲了这么多,现在来分析一下实例:

声明一个函数:

void sum(int a,int b);

   现编译器进行编译,编译完成之后。C语言中,在库中名字为:_sum。C++中,在库中名字为:_sum_int_int。

对该函数进行重载:

void sum(double a,double b);

   现编译器进行编译,编译完成之后。C语言中,在库中名字为:_sum。C++中,在库中名字为:_sum_double_double。

编译的最后一个阶段:链接。链接的是库文件,将生成的目标文件转化为可执行文件,都是找到目标文件的函数名进行链接。在C语言中,C语言是函数式语言,一切功能都是由函数完成,函数和重载函数名字都一样,编译器会认为是函数重复声明,这样是不行的,会在链接时报错。而在C++语言中,函数名是函数名+参数,函数名和重载函数名不同,在链接时不会报错。因此C++支持重载,C语言不支持重载。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值