do not give me the theory,show me the code!
以后的文章都主要以代码为主,然后归纳总结学习过程以及面试过程或者工作中我们所需要掌握的核心重点。
```cppusingnamespacestd; boolcompare(inta, intb) // compare_int_int{ cout<<"compare_int_int"<<endl; returna>b; } boolcompare(doublea, doubleb) // compare_double_double{ cout<<"compare_double_double"<<endl; returna>b; } boolcompare(constchar*a, constchar*b) // compare_const char*_const char*{ cout<<"compare_char*_char*"<<endl; returna>b; } intmain() { boolcompare(inta, intb); // 函数的声明compare(10, 20); compare(10.0, 20.0); // double -> intcompare("aaa", "bbb"); // const char* -> intreturn0; } ```
通过以上代码,总结一下函数重载所能涉及到的五个点:
1.C++为什么支持函数重载?C语言为什么不支持函数重载?
C++代码产生函数符号的时候,函数名+参数列表类型组成的!
C代码产生函数符号的时候,函数名来决定!
2.函数重载需要注意一些什么?
- 一组函数,其中函数名相同,参数列表的个数或者类型不同,那么这一组函数称为函数重载。
- 一组函数要称得上重载,一定是要处在同一个作用域当中的。
- const或者volatile的时候,是怎么影响形参类型的(以后细讲)?
- 一组函数,函数名相同,参数列表也相同,仅仅是返回值不同,不叫重载。
- 面试官让你解释函数重载:
同一个作用域下,函数名相同,参数列表不同的这样一组函数称为一组重载函数。
3.多态(以后细讲)
静态多态(编译期)(为什么是编译期:因为压栈,初始化栈指令等需要在编译期就确定好。):重载、模板
动态多态(运行期):重写
4.C++和C语言代码之间如何调用?
C -> C++ 把C++函数的定义括在extern "C"里面。
C++ -> C 把C函数的声明括在extern "C"里面。
5.介绍一下宏定义
如果在C++编译期中,就extern “C”,否则就不extern "C",这样对于代码编译成函数符号的时候就更加灵活。