本文档主要介绍了C++中的高级函数特性和计算几何形状面积的函数重载。在C++中,函数重载是一种重要的编程技术,它允许程序员为同一个函数名称提供多个不同的实现,以便根据传入参数的类型执行相应的操作。在提供的代码示例中,作者展示了如何定义三个`area`函数,分别计算正方形、长方形和三角形的面积。
1. **函数重载**:
- 函数重载基于函数名相同但参数列表不同的原则。在这个例子中,`area`函数被定义了三种形式:`int area(int)`用于计算正方形面积(仅一个整数参数),`double area(double, int)`和`double area(int, int)`分别处理长方形(一个双精度浮点数和一个整数)和三角形(两个整数)的面积。这种重载允许在编译时根据传入参数自动选择正确的函数实现。
2. **函数声明与定义**:
- 函数声明不仅列出函数名、返回类型和参数列表,有时可以省略参数名,只列出参数类型。例如,`void setTime(int, int, int)`是声明,而其完整形式`void setTime(int hour, int minute, int second)`则是定义。声明在函数定义之前,起到告知编译器函数存在并预期如何使用的功能。
3. **函数默认参数**:
- C++允许为函数参数设置默认值,如果调用函数时没有提供这些参数,将使用默认值。如`void setTime(int hour=8, int minute=0, int second=0)`,这样调用`setTime()`会设置时间为8:00:00,如果只传递一个参数,如`setTime(12)`,则minute和second会使用默认值。
4. **规则与注意事项**:
- 默认参数的使用要求一致性,一旦设置了某个参数的默认值,后续参数也必须有默认值。比如,`void errfunc(int num1=2, int num2, char ch='+')`是有效的,但`void errfunc(int num1=2, char ch='+', int num2)`是错误的,因为缺少了第二个参数的默认值。
- 默认值的类型必须与参数类型匹配,且可以在函数声明或定义时提供,但不允许在两者中重复设置。
通过学习这些概念,开发者可以更好地利用C++的函数重载和默认参数特性,提高代码的灵活性和可读性。理解和掌握这些高级函数特性对于编写高效且易于维护的C++程序至关重要。