有默认值的所有函数参数都必须一起放在参数列表的最后。
在调用函数时省略一个实参,就必须省略参数列表中所有的后续的实参。因此,对于有默认值的参数,应把最不可能省略的参数放在前面,把最可能省略的放在最后。这些规则是编译器处理函数调用所必需的。
下面看一下有多个默认实参值的函数例子。
void show_data(const int data[], size_t count, std::string_view title,
size_t width, size_t perLine)
{
std::cout << title << std::endl;
for (size_t i {}; i < count; ++i)
{
std::cout << std::setw(width) << data[i];
if ((i+1) % perLine == 0)
std::cout << '\n';
}
std::cout << std::endl;
}
参数 data 是要显示的值的数组, count 指明了数据值的个数。
第三个参数的类型是 string_view,它指定输出的标题。
第四个参数确定每个数据项的字段宽度,最后一个参数是每行的数据项个数。
这个函数有许多参数,下面的例子给一些