1、相较于C而言,C++允许我们在声明某个函数时为其形参附加上一个默认的值
如:int mul(int a = 5);
// .......
int mul(int a) { return a * a; }
这种声明中带有默认参数的写法在C++中是合法有效的,当我们以mul();这种方式(即没有显示的指明实参的值)来调用该函数时,即表明该参数使用默认参数。
2、强调:函数的默认参数必须在函数声明中指定
即 函数声明和函数定义均含有默认参数,且参数值不同 // Error
函数声明没有默认参数,函数定义中有默认参数 // Error
3、question:void func(); 和 void func(void) 一样吗?
answer:C中,两者不相同,前者代表该函数在调用时接受任意参数,后者则代表该函数在调用时不接受任何参数
C++中,两者意义相同,意义均为该函数在调用时不接受任何参数
4、C++中函数定义时允许这样的一种参数形式
int func(int, int); // OK,这里的参数即为占位参数
从某种程度上来说,C++之所以提出且支持占位参数这么个东西,结合上边的第3点,则是为了兼容已经存在的用C写好的不规范的代码,是为了进行代码移植时,达到最小的改动即可工作的目的。
如:有这么一段C代码
如果进行移植,直接这样将代码拷过去,在g++编译器下是无法编译通过的,那么为了最小的改动,就可以结合函数的默认参数和占位参数,只对函数的参数做些修改即可达到编译通过的目的,改动后的代码参考如下: