多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# C++ 函数重载 > 原文: [https://www.programiz.com/cpp-programming/function-overloading](https://www.programiz.com/cpp-programming/function-overloading) #### 在本教程中,我们将通过示例学习 C++ 中的函数重载。 在 C++ 中,如果传递的参数的数量和/或类型不同,则两个函数可以具有相同的名称。 这些具有相同名称但参数不同的函数称为重载函数。 例如: ```cpp // same number different arguments int test() { } int test(int a) { } float test(double a) { } int test(int a, double b) { } ``` 在此,所有 4 个函数均为重载函数。 请注意,所有这四个函数的返回类型都不相同。 重载的函数可以具有或可以不具有不同的返回类型,但是它们必须具有不同的参数。 例如, ```cpp // Error code int test(int a) { } double test(int b){ } ``` 在这里,两个函数具有相同的名称,相同的类型和相同数量的参数。 因此,编译器将引发错误。 * * * ## 带有不同类型参数的函数重载 ```cpp // Program to compute absolute value // Works for both int and float #include <iostream> using namespace std; // function with float type parameter float absolute(float var){ if (var < 0.0) var = -var; return var; } // function with int type parameter int absolute(int var) { if (var < 0) var = -var; return var; } int main() { // call function with int type parameter cout << "Absolute value of -5 = " << absolute(-5) << endl; // call function with float type parameter cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl; return 0; } ``` **输出** ```cpp Absolute value of -5 = 5 Absolute value of 5.5 = 5.5 ``` ![Working of C++ Function Overloading for absolute()](https://img.kancloud.cn/12/b1/12b166fd5c1639a35461ea533abf1df9_938x774.png "Working of C++ Function Overloading for absolute()") `absolute()`函数重载的原理 在此程序中,我们重载了`absolute()`函数。 根据函数调用期间传递的参数类型,将调用相应的函数。 * * * ## 带有不同数量的参数的函数重载 ```cpp #include <iostream> using namespace std; // function with 2 parameters void display(int var1, double var2) { cout << "Integer number: " << var1; cout << " and double number: " << var2 << endl; } // function with double type single parameter void display(double var) { cout << "Double number: " << var << endl; } // function with int type single parameter void display(int var) { cout << "Integer number: " << var << endl; } int main() { int a = 5; double b = 5.5; // call function with int type parameter display(a); // call function with double type parameter display(b); // call function with 2 parameters display(a, b); return 0; } ``` **输出** ```cpp Integer number: 5 Float number: 5.5 Integer number: 5 and double number: 5.5 ``` 在此,`display()`函数使用不同的参数调用了三次。 根据传递的参数的数量和类型,调用相应的`display()`函数。 ![Working of C++ Function Overloading for display()](https://img.kancloud.cn/b5/1f/b51f318e6de2d39d68a009222f8c303b_994x1092.png "Working of C++ Function Overloading for display()") `display()`函数重载的原理 所有这些函数的返回类型都相同,但函数重载不必如此。 * * * **注意**:在 C++ 中,许多标准库函数都已重载。 例如,`sqrt()`函数可以将`double`,`float`,`int,`等作为参数。 这是可能的,因为`sqrt()`函数在 C++ 中已重载。