函数重载
-
相同功能但 不同形参类型 或 数量 的同名函数创建(这里的不同形参类型指两个同名函数中至少存在一个形参占位中的类型对应不一致),函数重载是编译时的多态
-
不同形参类型可定义重载
void fun(int a); void fun(double a);
-
不同参数数量可定义重载
void fun(int a, int b); void fun(int a, int b, int c);
-
不同形参类型且不同形参数量可定义重载
void fun(int a); void fun(double a, double b);
-
不同参数类型传入顺序可定义重载,但并不建议这样做,当传入的参数需要进行隐式转换的时候就会出现错误,如下方传入两个int
void fun(int a, double b); void fun(double a, int b);
-
仅返回值类型不同不可定义重载
void fun(int a); int fun(int a); //×
注:不同功能不应该定义为重载
形参默认值
-
当参数传递不够时采用默认值作为参数
-
形参默认值的声明位置
- 一般在函数的声明中给出,不在定义中给出
- 仅当函数体定义在所有调用之前时可以在函数定义中给出(不常用)
void fun(int a = 0, int b = 5); //... void fun(int a, int b){ //... }
-
给出默认值的形参右侧的形参也必须给出默认值,即只能从右向左定义形参默认值
void fun(int a, int b = 0); // √ void fun(int a = 5, int b); // × void fun(int a, int b = 0, int c); // ×
-
全局声明和局部声明可以分别给出不同默认值(局部屏蔽全局),但同一作用域下不可重复给出默认形参(如在全局声明和全局定义中同时给出)