函数重载:
- C++为什么支持函数重载,C语言为什么不支持函数重载
- 函数重载需要注意什么?
- C++和C语言之间如何互相调用
上图为典型的函数重载调用!
C++为什么支持函数重载,C语言为什么不支持函数重载:
C++代码产生符号的时候,函数名+参数列表类型组成!C代码产生函数符号的时候由函数名决定!
上图:如果在main作用域声明一个函数类型,那么41行报错,无法将const char* 转换成int!编译器在最近的作用域查看函数声明,就用这个函数类型!也就是说必须在同一个作用域,才谈得上重载!其次是一组函数,函数名相同,参数列表的个数或者类型不同,那么这一组函数就称作函数重载!const或者volatile的时候:
void func(int a){}
void func(const int a){}
编译器看这两个函数是一样的,报错!
一组函数,函数名相同,参数列表也相同,仅仅是返回值不同,这是重载么?不是重载!
后续章节:
啥是多态:
静态(编译时期)的多态:函数重载
动态(运行时期)的多态:
C调用C++、C++调用C
C文件:
cpp文件:
C文件中按照C来生成符号,而C++中的声明按照C++来产生符号,自然就符号不匹配了,报错!改进:
告诉编译器这是C的API,产生C方式的符号!(把C函数的声明括在extern "C"里面)
而C调用C++的时候,需要在C++函数定义的时候,括在extern "C"里面!