📅  最后修改于: 2023-12-03 15:13:45.012000             🧑  作者: Mango
在C ++中,函数重载是指在同一个作用域内定义多个函数,函数名称相同但参数列表不同。这些不同版本的函数可以接收不同的参数类型和数量,从而使你能够使用相同名称的函数来执行不同的任务。
默认参数是函数定义中一种特殊的参数类型,当调用函数时没有为该参数提供值时,使用默认值来替代。默认参数也可以简化代码和提高代码的可读性。
下面是一个函数重载的例子。我们定义了两个名称相同的函数,但参数个数和类型不同。第一个函数接收一个整数,第二个函数接收两个浮点数。
#include <iostream>
using namespace std;
void print(int num){
cout << num << endl;
}
void print(float num1, float num2){
cout << num1 << ", " << num2 << endl;
}
int main(){
print(10); // 调用 print(int) 函数
print(1.23, 4.56); // 调用 print(float, float) 函数
return 0;
}
上述代码输出结果为:
10
1.23, 4.56
下面是一个使用默认参数的函数。在函数定义中定义了一个参数的默认值1,如果在调用函数时没有为该参数提供值,则使用默认值1。
#include <iostream>
using namespace std;
int getArea(int length, int width = 1){
return length * width;
}
int main(){
cout << "area = " << getArea(5) << endl; // 输出:area = 5
cout << "area = " << getArea(7, 3) << endl; // 输出:area = 21
return 0;
}
上述代码输出结果为:
area = 5
area = 21
下面是同时使用函数重载和默认参数的例子。我们定义了两个名称相同的函数,但一个函数使用默认参数,另一个函数使用两个不同的参数。
#include <iostream>
using namespace std;
int getArea(int length){
return length * 1;
}
int getArea(int length, int width){
return length * width;
}
int main(){
cout << "area = " << getArea(5) << endl; // 调用 getArea(int) 函数和默认参数
cout << "area = " << getArea(7, 3) << endl; // 调用 getArea(int, int) 函数
return 0;
}
上述代码输出结果为:
area = 5
area = 21
在上述例子中,当调用getArea(5)
时,调用的是getArea(int length)
函数,并使用默认参数1来计算面积。当调用getArea(7, 3)
时,调用的是getArea(int length, int width)
函数,并使用传递的参数计算面积。 可以看出,通过函数重载和默认参数的结合使用,我们可以更方便地定义灵活的函数,提高代码的可维护性和可读性。
总之,函数重载和默认参数是两个非常有用的特性,可以帮助我们更灵活地定义需要执行不同任务的函数。