前言
一个程序要运行起来,需要经历以下几个阶段:
1.预处理:头文件展开+宏替换+去掉注释+条件编译
2.编译:检查语法,生成汇编代码
3.汇编:把汇编代码转换成二进制机器指令
4.链接:链接到一起生成可执行程序
如果一个函数在头文件中声明,在源文件中定义,那么在编译时,是找不到函数的地址的
但是链接就是专门处理这种问题的,链接器在看到.o文件(编译后产生的文件)在调用函数,没有找到函数的地址,就会到放函数的源代码编译后产生的.o文件的符号表中找,然后链接到一起。
每个编译器都有自己的函数名修饰规则
提示:windows下vs编译器对函数名修饰规则太复杂,在linux下g++简单明了,所以本文用linux做演示
一、C++为什么可以函数重载?
在g++编译器下编译的结果为: