09 July 2022

C++ 核心指南目录

理由

默认参数方式,提供了简单唯一的接口,实现函数变体。为了确保重载的函数能够实现了相同的机制,我们还需要额外的精力去检查。但是,使用默认参数能够避免重复的代码出现在多个地方。

注意

如果使用函数重载的目的是为了实现一组能够接受相同参数的函数变体,那么使用默认参数就比较合理。

例子

void print(const string& s, format f = {});

比函数重载简洁:

void print(const string& s);  // use default format
void print(const string& s, format f);

然而,当一组函数针对不同参数类型提供相同语义操作,那就没其他选择了,只能进行函数重载了。

例子

void print(const char&);
void print(int);
void print(zstring);

see also: 虚函数的默认参数

强化

对以下情况进行警告:一组重载函数的声明前面部分都很相似。(比如 f(int), f(int, const string&), f(int, const string&, double)