zoukankan      html  css  js  c++  java
  • C++默认实参

    某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。

    例如定义一个函数screen表示窗口的内容:

    typedef string::size_type sz;
    string screen(sz ht = 24, sz wid = 80, char backgrnd = ' ');

    我们可以为一个或多个形参定义默认值,但是需要注意:一旦某个形参被赋予了默认值,它后面的所有形参都必须有默认值

    比如 string screen(sz, sz = 80, char = ' '); 这样的代码是正确的,但是 string screen(sz = 24, sz, char); 就是错误的。

    我们可以提供实参覆盖默认值,但是要想覆盖后面的默认实参,必须给前面的形参也提供默认值,而不能跳过,比如:

     string window = screen(, , '?'); 

    是错误的,而下列两行都是正确的:

     string window = screen(20, 20, '?'); 
     string window = screen(20); //等价于screen(20, 80, ' ')

      

    我们还可以多次声明同一个函数,后续声明能且只能给之前那些没有默认值的形参添加默认实参,而且该形参的右侧的所有形参都必须有默认值。假如给定

    string screen(sz, sz, char = ' ');

    我们不能修改一个已经存在的默认值

    string screen(sz, sz, char = '*');//错误:重复声明

    但是可以按照如下形式添加默认实参:

    string screen(sz = 23, sz = 80, char);
  • 相关阅读:
    linux 11201(11203) ASM RAC 安装
    [学习笔记]多项式对数函数
    linux 10201 ASM RAC 安装+升级到10205
    tar
    [学习笔记]多项式开根
    gzip
    小朋友和二叉树
    zip
    bzoj5016 一个简单的询问
    unzip
  • 原文地址:https://www.cnblogs.com/Lightfall/p/9952832.html
Copyright © 2011-2022 走看看