目录
1.c++的执行编译过程
步骤:
- 预处理:展开头文件,替换宏,去除注释,条件编译
- 编译:检查语法错误,生成汇编代码
- 汇编:把汇编代码转化为二进制机械代码
- 链接:链接到一起生成可执行程序
如图所示
2.面试题:为什么c++可以重载,c语言不可以
思想:
- 当进行第三步汇编:把汇编代码转化为二进制机械代码,其中的符号表储存着函数名
- c++会因为函数名修饰规则,转化格式:_z+函数个数+函数名+函数参数(参考图易懂),分别为_z3addii和_z3adddd两者右明显的不同,所以支持函数重载
- C语言的函数名存储是直接转化使用函数名;C语言的格式:就是函数名,int add(int x,int y)和double add(double x,double y)转化都是add,两者相同,所以不支持函数重载
如图所示:
总结:
- 函数重载的量不同:1.参数不同 2.参数的个数不同
- c语言不支持就是因为直接转化函数名,c++支持是因为函数名修饰规则(c++可以说是C语言的优化,c++解决了C语言以前的一些问题)