【C++】《C++ 17 入门经典》读书笔记 18 ---- 函数多个默认实参值

有默认值的所有函数参数都必须一起放在参数列表的最后。

在调用函数时省略一个实参,就必须省略参数列表中所有的后续的实参。因此,对于有默认值的参数,应把最不可能省略的参数放在前面,把最可能省略的放在最后。这些规则是编译器处理函数调用所必需的。

下面看一下有多个默认实参值的函数例子。

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,它指定输出的标题。

第四个参数确定每个数据项的字段宽度,最后一个参数是每行的数据项个数。

这个函数有许多参数,下面的例子给一些参数使用默认值:

#include <iostream>
#include <iomanip>
#include <string_view>

void show_data(const int data[], size_t count = 1, std::string_view title = "Data_Values",
                size_t width = 10, size_t perLine = 5);

int main()
{
    int samples[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};

    int dataItem {-99};
    show_data(&dataItem);

    dataItem = 13;
    show_data(&dataItem, 1, "Unlucky for some!");
    
    show_data(samples, std::size(samples));
    show_data(samples, std::size(samples), "Samples");
    show_data(samples, std::size(samples), "Samples", 6);
    show_data(samples, std::size(samples), "Samples", 8, 4);
}

注意:只能省略参数列表中最后的几个参数!

例如:不能省略第2个和第5个参数:

// 以下是错误的参数省略做法
show_data(samples, , "Sampels", 15);

 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值