函数在声明时可以预先给出默认的形参值,调用时如给出实参,则采用实参值,否则采用预先给出的默认参数值。
int add(int x = 5,int y = 6) { return x + y;} int main() { add(10,20);//10+20 add(10);//10+6 add();//5 + 6 }
默认参数值的说明次序
有默认参数的形参必须在形参列表的最后,也就是说默认参数值的右面不能有无默认值的参数,因为调用时实参与形参的结合是从左到右的顺序。
int add(int x,int y = 5,int z = 6);//正确 int add(int x = 1,int y = 5,int z);//错误 int add(int x = 1,int y,int z = 6);//错误
默认参数值与函数的调用位置
如果一个函数有原型声明,并且原型声明在定义之前,则默认参数值必须在函数原型声明中给出;而如果只有函数的定义,或函数定义在前,则默认参数值需在函数定义中给出
#include<iostream> using namespace std; int add(int x = 5, int y = 6); int main() { cout<<add(); system("pause"); return 0; } int add(int x, int y) { return x + y; }
结果为11
#include<iostream> using namespace std; int add(int x = 5, int y = 6) { return x + y; } int main() { cout<<add(); system("pause"); return 0; }
结果相同
带默认参数值的函数举例:
计算长方体的体积:子函数getVolume是计算体积的函数,有三个形参:lengrh(长),width(宽),height(高),其中width和height带有默认值
主函数中以不同形式调用getVoluime函数,分析程序的运行结果
#include<iostream> #include<iomanip> using namespace std; int getVolume(int length, int width = 2, int height = 3); int main() { const int X = 10, Y = 12, Z = 15; cout << "Some box data is "; cout << getVolume(X,Y,Z) << endl; cout << "Some box data is "; cout << getVolume(X, Y) << endl; cout << "Some box data is "; cout << getVolume(X) << endl; system("pause"); return 0; } int getVolume(int length, int width, int height) { cout << setw(5) << length << setw(5) << width << setw(5) << height << endl; return length * width * height; }
输出结果: