带默认参数值的函数
默认形参值:函数在定义时可以预先声明默认的形参值。调用时如果给出实参,则用实参初始化形参;如果没有给出实参,则采用预先声明的默认形参值。
说明次序
- 有默认参数的形参值必须列在形参表的最右,即默认参数值的右边不能有无默认值的参数
- 调用时实参与形参的结合次序是从左向右
默认参数值与函数的调用位置
- 如果一个函数有原型声明,且原型声明在定义之前,则默认形参值在原型声明中给出;
- 如果只有函数的定义,或函数定义在前,则默认参数值可以在函数定义中给出。
- 在函数的定义或原型声明外,在函数定义中用注释说明默认形参值是一种好习惯。
例计算长方体的体积
//3_15.cpp
#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;
return 0;
}
int getVolume(int length, int width/* = 2 */, int height/* = 3 */) {
cout << setw(5) << length << setw(5) << width << setw(5) << height << '\t';
return length * width * height;
}
运行结果
Some box data is 10 12 15 1800
Some box data is 10 12 3 360
Some box data is 10 2 3 60
该例中函数调用在定义之前,所以需要声明函数原型,且需要在函数原型中标明形参默认值,并且要将带默认值的参数放在右侧。
setw函数是给紧跟着后面的数据预定一个空间,如果该数据小于这个空间,在左边用‘0’补齐;setw()只对紧跟在他后面的数据有效