函数重载的概念
C++允许在同一个作用域中存在同名函数
这些同名函数的形式参数的列表不同:参数的个数、参数的类型、类型的顺序
同名函数通常用于处理功能类似但是数据类型不同的问题
函数重载的三种情况
参数的个数不同
#include<iostream>
using namespace std;
//参数个数不同
void f()
{
cout << "f()" << endl;
}
void f(int a)
{
cout << "f(int a)" << endl;
}
参数的类型不同
#include<iostream>
using namespace std;
//参数类型不同
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
类型的顺序不同
#include<iostream>
using namespace std;
//参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char a, int b)
{
cout << "f(char a, int b)" << endl;
}
函数重载的原理:名字修饰
此处原理有些复杂,不再赘述
总结:
1.C/C++程序运行起来,需要经历4个阶段:预处理、编译、汇编、链接
2.C语言无法支持函数重载,因为它无法区分同名函数;而C++可以通过函数修饰规则区分,从而支持重载
3.返回值不同无法构成重载,编译器不支持区分