概述
什么是重载?
允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。
什么是函数重载?
函数的重载:
在同一个作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同。
问题来了,为什么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语言不支持重载。
最后
以上就是不安花生为你收集整理的函数重载--C++支持重载而C不支持的全部内容,希望文章能够帮你解决函数重载--C++支持重载而C不支持所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复