函数重载:一组函数,其中函数名相同,参数列表的个数或者类型不同,那么这一组函数就称作函数重载。函数重载发生在编译时期。
(1)函数重载与函数返回值无关,因为在产生符号时没有返回值
(2) 函数重载需要在同一个作用域
(3)const或者volatile的时候,是如何影响形参的
1 为什么C++支持函数重载,C语言不支持
编译器产生函数符号的规则不同:
C++代码产生函数符号时,函数名+参数列表组成;C语言产出函数符号时,只有函数名。
详细见:9 动态链接库_LIJIWEI0611的博客-CSDN博客
2 函数重载需要注意什么
函数重载需要在同一个作用域下。
#include <iostream>
bool compare(int a, int b) {
return a > b;
}
bool compare(double a, double b) {
return a > b;
}
bool compare(const char * a, const char * b) {
return 1;
}
int main()
{
bool compare(double a, double b);
compare("adf","wew");
return 0;
}
由于在局部作用域声明了新的compare,导致无法重载外部作用域的compare
const int和int的重载:
#include <iostream>
void func(int a) {}
void func(const int a) {}
int main()
{
return 0;
}
原因:
#include <iostream>
#include <typeinfo.h>
int main()
{
int a = 10;
const int b = 10;
std::cout << typeid(a).name() << std::endl;
std::cout << typeid(b).name() << std::endl;
return 0;
}
;
输出:
const int 和int在编译器看来都是int 类型 ,如何完成重载
3 C++和C语言如何相互调用
由于C++和C语言的编译器生成的函数符号不同,在C++使用c语言需要使用exten "C"{};