一、缺省参数
(1)概念:在声明或定义时为函数参数指定一个默认值,在调用该函数时如果没有给定实参则采用默认值,否则使用给定实参。
(2)分类
------->全缺省参数:每个参数都给了默认值。如下图所示:调用函数时,给出的实参与形参依次从左到右进行匹配,若实参未全部给出,则使用对应位置的缺省值。
------->半缺省参数:给出部分参数的缺省值,但要注意必须从右到左依次给出,不能间隔给出。如图所示,在调用函数时若未给出任何实参将会报错。
(3)注意:<1>缺省参数只能在定义或声明时给出,不能同时在这两个位置给出,最好将缺省参数值在声明的时候给出;
<2>缺省值必须是常量或全局变量;
<3>C语言不支持该语法。
二、函数重载
C++允许在同一作用域中声明几个功能类似的同名函数,但这几个同名函数形参列表(参数个数、类型、顺序)必须不同。
(1)函数重载的条件:<1>相同的作用域;
<2>函数名必须相同;
<3>参数列表必须不同。
注意:函数是否构成重载与函数的返回值类型无关。
(2)在程序编译期间会对函数的参数进行类型推演,根据推演结果去选择合适的调用函数。
(3)如果没有合适类型匹配的重载函数,编译器可能会出现下面两种情况:
<1>尝试隐式类型转换--直接调用。
<2>编译失败。
(4)注意:函数重载最好不要同时出现全缺省与不带实参的函数。
void TestFunc(int a = 10)
{
}
void TestFunc()
{
}
int main()
{
TestFunc(20);
TestFunc();
return 0;
}
(5)C语言中不支持函数重载:这与其命名规则有关。
(6)若要在C++工程中将一个函数按照C语言的风格进行编译,则需使用“external”关键字。