一组函数,函数名相同。函数的参数类型或参数个数不同,那么这一组函数就称作函数重载。
C++ 为什么支持函数重载?
- C++代码产生函数符号的时候,是由函数名+参数列表组成的;
- C代码产生函数符号的时候,是由函数名来决定;
函数重载需要注意什么?
-
一组函数如果是重载函数,一定是处于同一作用域。否则函数调用时会优先调用处于当前最近作用域的那个函数。
bool compare(int a, int b) {} bool compare(char a, char b) {} bool compare(double a, double b) {} int main() { bool compare(int a, int b); //所有的函数调用都会调用 bool compare(int a, int b) {},因为处于同一作用域 compare(1, 4); compare(1.0, 4.0); compare('1', '4'); }
-
一组函数被 const、volatile修饰时是重载吗?
-
一组函数,函数名相同、参数列表也相同,仅仅是返回值不同,不是重载。
C++和C语言代码之间如何相互调用?
- C++调用C代码,无法直接调用,会出现无法解析的外部符号。可以通过把函数声明用
extern C
修饰。表示按照C语言规则生成代码。 - C调用C++,无法直接调用,可以通过把C++函数用
extern C
修饰。表示按照C语言规则生成代码。
const顶层与const底层重载
- const顶层不能作为重载的依据;
- const底层可以作为重载的依据