C语言不支持重载,但C++支持函数重载的原因
在解释原因之前,我们首先需要了解一些基本知识
1、什么是重载??
重载:函数名相同时,参数类型、参数个数、参数顺序,三者任意一者不同即可构成重载
2、程序运行时干了啥?——以func.h为例
程序运行起来需要经过下面几个阶段:
(1)预处理 —— 头文件展开、宏替换(#define)、条件编译(#ifdef)、去除注释(生成 .i 文件)
(2)编译 —— 检查语法,若无误,生成汇编代码(生成 .s文件)
(3)汇编 —— 汇编代码转换成二进制机器码(生成 .o文件)
(4)链接 —— 生成可执行文件
在预处理阶段,展开头文件func.h,将函数声明裸露在main函数中(后面通过实例说明)
在编译阶段,检查语法,C和C++根据各自的编译命名规则,生成 对应的函数名
在汇编阶段,生成 func.o文件以及func.o的符号表(编译阶段生成的函数名:函数地址)
在链接阶段,根据编译阶段生成的函数名 去符号表找 函数地址,以此找到函数定义
3、C 和 C+
共有 0 条评论