//函数重载:函数名相同,参数表不同的函数,参数表不同包括:参数的个数不同,参数类型不同,参数类型的顺序不同,函数重载主要是解决一种功能相同,但是变量类型的问题
两个为什么:为什么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文件(目标文件)