函数重载:用同一个函数名定义不同的函数,当函数名和不同的参数类型搭配时函数的含义不同。

1 重载规则

  1. 函数名相同。

  2. 参数个数不同,参数的类型不同,参数类型顺序不同,均可构成重载。

3. 反正值类型不同则不可以构成重载。

2 重载底层实现

其实C++编译的时候,编译器会通过更改函数名,区分参数不同的同名函数。

实现原理: 用 v c i f l d 表示 void char int float long double 及其引用。

void func (char a); /*  更改函数名为func_c */
void func (char a, int b, double c); /* 更改函数名为func_cid */

3 函数重载与函数默认参数

一个函数,不能即作重载,又作默认参数的函数。当你少写一个参数时,系统无法确认是调用哪个函数。存在二义性。
int func (int a, int b, int c = 0) {
  return a + b;
}

int func (int a, int b) {
  return a + b;
}