1. C++缺省函数:默认行为的灵活控制
在C++中,缺省函数(Default Function)是指那些在声明时已经提供默认参数的函数。这个特性看似简单,但在实际工程中却能显著提升代码的灵活性。想象一下你正在设计一个绘图库的API,其中有个绘制矩形的函数需要位置、大小、颜色等多个参数。对于大多数调用场景,颜色可能只需要默认的黑色即可。这时缺省参数就派上用场了:
cpp复制void drawRectangle(int x, int y, int width, int height,
Color color = Color::Black) {
// 绘制实现...
}
这个设计允许调用者既可以指定所有参数,也可以省略颜色参数:
cpp复制drawRect(10, 10, 100, 100); // 使用默认黑色
drawRect(10, 10, 100, 100, Color::Red); // 显式指定红色
重要提示:缺省参数必须从右向左连续设置,不能出现类似
func(int a=1, int b)这样的声明,这会导致编译错误。
在实际项目中,我经常看到开发者滥用缺省参数的几个典型场景:
-
过度使用缺省值:给太多参数设置默认值,导致函数调用意图不清晰。通常建议不超过3个缺省参数。
-
默认值与业务逻辑耦合:将业务关键参数设为默认值,可能掩盖重要的业务决策。比如支付接口的手续费率就不应该设置默认值。
-
跨编译单元不一致:缺省参数在函数声明处指定,如果在头文件和实现文件中定义不一致,会导致难以排查的问题。
2. 函数重载:同名不同参的艺术
函数重载(Function Overloading)允许我们定义多个同名函数,只要它们的参数列表(参数类型、数量或顺序)不同即可。编译器会根据调用时传入的实参类型自动选择最匹配的版本。这个特性在数学运算库中特别有用:
cpp复制// 计算两个整数的和
int add(int a, int b) {
return a + b;
}
// 计算两个浮点数的和
double add(double a, double b) {
return a + b;
}
