函数重载是指两个函数具有相同的函数名,但是函数参数的个数或者类型不同。函数重载多发生在顶层函数之间或者同一个类中,函数重载不需要构成继承关系。

class base
{
public :
base();
base(int a);
base(int a, int b);
base( base &);
int fun(int a);
int fun(double a);
int fun(int a, int b);
private:
int x;
int y;
};
int g(int a);
int g(double a);
int g(int a, int b);
在本例中,我们列出了几种函数重载的情形
  • 首先是函数的构造函数重载,类中声明了四个构造函数,这四个函数构成重载的关系,前面三个函数之间只是函数参数数目不同,第四个构造函数为拷贝构造函数,该函数与默认构造函数和两个带参构造函数的参数类型不同。
  • 类中的成员函数同样可以进行重载,如本例中 base 类的三个 fun() 函数。
  • 前两种情况是类内部的函数重载,在类外部顶层函数也同样能够成函数重载关系。如本例中的 g() 函数,这三个函数都是顶层函数,由于函数名相同,但是函数参数不同,构成函数重载关系。
  • 函数重载是编译期绑定,它并不是多态。