六一的部落格


关关难过关关过,前路漫漫亦灿灿。



default argument

有时, 无意外情况, 多次调用某函数, 为某个形参传入相同值

可以为这类形参设置默认实参, 函数调用时, 省略该形参对应的实参


注意

  1. 一旦为某个形参设置了默认实参,它后面的所有形参都必须拥有默认实参
    1typedef string::size_type sz;
    2string screen(sz ht = 24, sz wid = 80, char backgrnd = ' ');
  2. 只能省略尾部的实参
    1string window;
    2window = screen(66); // 等价于screen(66, 80, ' ');
    
  3. 如果想覆盖backgrnd值, 则必须为ht和wid提供实参
    1window = screen(, , '?'); // 错误
    2window = screen('?'); // 等价于screen('?', 80, ' '); char可以转换为sz
    

设计含有默认实参的函数时, 将较少使用默认值的形参放在最前面, 经常使用默认值的形参放在最后


默认实参


default argument

有时, 无意外情况, 多次调用某函数, 为某个形参传入相同值

可以为这类形参设置默认实参, 函数调用时, 省略该形参对应的实参


注意

  1. 一旦为某个形参设置了默认实参,它后面的所有形参都必须拥有默认实参
    1typedef string::size_type sz;
    2string screen(sz ht = 24, sz wid = 80, char backgrnd = ' ');
  2. 只能省略尾部的实参
    1string window;
    2window = screen(66); // 等价于screen(66, 80, ' ');
    
  3. 如果想覆盖backgrnd值, 则必须为ht和wid提供实参
    1window = screen(, , '?'); // 错误
    2window = screen('?'); // 等价于screen('?', 80, ' '); char可以转换为sz
    

设计含有默认实参的函数时, 将较少使用默认值的形参放在最前面, 经常使用默认值的形参放在最后