重载
同一个作用域内的几个函数名字相同但是形参列表不同,我们称之为重载(overload)
不能定义两个函数除了返回类型外其他所用的要素都相同。
重载和const形参
默认实参
调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。注意,一旦某个形参被赋予了默认值,它后面的所有形参都必须有默认值。
函数调用时,默认实参负责填补函数调用缺少的尾部实参(靠右侧位置)。
typedef string::size_type sz;
string screen(sz ht = 24, sz wid = 80, char backgrnd = ' ');
如,想要覆盖backgrnd的默认值,必须为ht和wid提供实参
window = screen( , , '?'); //错误,只能省略尾部的实参
window = screen(’?‘); //正确 ,调用的是screen('?',80, ' ')
虽然实际上是将?的ascii码63传给了height
默认实参初始值
局部变量不能作为默认实参。除此之外,只要表达式的类型能够转换成形参所需的类型,该表达式就能作为默认实参。
//wd,def和ht的声明必须出现在函数之外,
sz wd=80;
char def = ' ';
sz ht();
string screen(sz = ht(), sz = wd, char = def