函数在声明的时候可以预先给出默认形参值。调用时如果给出实参,那么就采用实参值,否则就使用给出的默认形参值。
【代码】
#include <iostream>
using namespace std;
int add(int a=3,int b=4){
return a+b;
}
int main(){
cout<<"add(1,2)="<<add(1,2)<<" add(1)="<<add(1)<<" add()="<<add()<<endl;
return 0;
}
【运行结果】
默认形参值必须是从右到左的顺序声明,并且在默认形参值的右边不能有非默认形参值的参数,因为调用的时候实参取代的是形参从左向右的顺序。(函数调用的时候参数是自右向左入栈的)
如上图所示,在默认值的右边不能有非默认值形参值的参数,否则报错。
在调用一个函数的时候,如果省略了某一个实参,那么直到最后一个实参也要省略(而且与他们对应的形参都要有默认值)
int fun(int a,float b=5.0,char c=’.’,int d=100);
fun(8, , ,4);//false
形参默认的值也可以是初始化表达式,甚至可以是函数调用。