C++ 函数重载
C++ 中的函数重载是一种重要的特性,它允许在同一个作用域内定义多个同名但参数列表不同的函数。
函数重载的主要目的是为了让程序能够更自然、更灵活地处理不同类型或数量的参数。
比如说下面这段代码,在C里面就不可以,但是在C++里面确可以
int print(int a)
{
printf("呵呵\n");
return a;
}
double print(double a)
{
printf("hehe\n");
return a;
}
int main(void) {
int a = 3;
double b = 4;
print(a);
print(b);
return 0;
}
但是产生这样的原因是什么呢?
是因为代码在编译的时候(汇编语言)C语言选择的是函数名,而C++选择的函数名+形参类型
这就是C++的函数名修饰规则!
那么函数重载和什么有关呢?
和形参类型和类型顺序以及参数个数
和形参名字没有关系
和返回值没有关系
那么再思考一下,如果C++的汇编把返回值加入到修饰规则
那么函数重载和返回值有关系吗?
答案依然是没有关系啊,因为.c的文件是只要在链接才执行,这个时候你只能通过函数地址,找到在.h文件的函数声明,这无法判断返回值!
但是思考一下
有些地方虽然函数可以重载,但是程序运行时会出现歧义,这是我们需要注意的