8.3 默认参数
默认参数:在函数调用省略了实参的时候会自动使用的一个值
void wow(int n = 1);
当调用 wow() 相当于调用 wow(1)
注意:对于带参数列表的函数,必须从右到左添加默认值。实参按重左到右的的顺序依次被赋给相应的形参,不能跳过任何一个参数。
8.4 函数重载
函数重载:函数重载是指在同一个作用域内,可以定义多个同名的函数,但这些函数的参数列表必须不同。
注意:对于单一的重载,当类型不匹配时会进行类型的转换,从而匹配相应的函数,当有多种选择的时候,编译器将会拒绝选择,并将其视为错误。编译器在检查函数特征标的时候将会把类型引用和类型本身视为同一个特征标。
重载引用参数
请看如下三个代码段
void sink(double& r1);
void sink(const double & r2);
void sink(double && r3);
第一个函数的参数与可修改的左值参数匹配,第二个函数与可修改的左值,cosnt左值参数,和右值参数进行匹配,第三个函数与左值匹配。重载这三个函数结果将如何呢?
答案是会调用最匹配的版本
double x = 55.5;
const double y = 32.0;
sink(x) // 使用第一个函数
sink(y) // 使用第二个函数
sink(x + y) // 使用第三个函数