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

函数重载--C++支持重载而C不支持,第1张

什么是重载?

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


什么是函数重载?

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


问题来了,为什么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++语言不支持重载。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/569856.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存