📅  最后修改于: 2023-12-03 14:59:36.607000             🧑  作者: Mango
在 C++ 中,函数重载(function overloading)和默认参数(default arguments)是两项基本的功能,可以帮助程序员简化代码和提高代码的复用性。本文将分别介绍这两项功能,并提供相应的代码示例。
函数重载是指在一个类中定义多个同名的成员函数,但这些函数的参数个数或参数类型不同。这样一来,通过参数来区分不同的函数,就可以实现同名函数的复用。例如:
#include <iostream>
using namespace std;
void func(int a)
{
cout << "This is func with one argument: " << a << endl;
}
void func(int a, int b)
{
cout << "This is func with two arguments: " << a << " and " << b << endl;
}
int main()
{
func(1);
func(2, 3);
return 0;
}
上面的代码定义了两个同名函数 func
,但一个带有一个整数参数,另一个带有两个整数参数。在 main
函数中,我们分别调用这两个函数,并传递不同的参数。运行结果如下:
This is func with one argument: 1
This is func with two arguments: 2 and 3
从输出结果可以看出,函数重载可以使我们在不同情况下使用相同的函数名,从而实现代码重用。
需要注意的是,函数重载时不能只是返回类型不同,否则会编译报错。
另外,如果两个函数除了参数个数和类型不同之外完全相同,那么也不能进行函数重载。
默认参数是指在函数定义时为某些参数设置一个默认值,在函数调用时可以不传递这些参数,由函数使用默认值。例如:
#include <iostream>
using namespace std;
int func(int a, int b = 1)
{
return a * b;
}
int main()
{
cout << func(2) << endl; // 使用默认参数b=1
cout << func(2, 3) << endl; // 不使用默认参数,传递实际参数b=3
return 0;
}
注意,有默认参数的参数必须从右往左规律有序赋值。
上面的代码定义了一个函数 func
,其中第二个参数 b
的默认值为 1。在 main
函数中,我们分别调用这个函数并传递不同的参数。第一个调用中只传递了一个参数,因此使用了默认值;第二个调用中显式地传递了两个参数,因此不使用默认值。运行结果如下:
2
6
从输出结果可以看出,使用默认参数可以简化函数的调用,同时也提高了代码的复用性和可维护性。
需要注意的是,如果一个函数的某个参数设有默认值,在该参数的右侧的所有参数也必须有默认值,否则会编译报错。
函数重载和默认参数是 C++ 中非常基本的功能,通过这两项功能,程序员可以更加灵活地使用函数,并能够简化代码结构,提高代码的复用性。需要注意的是,函数重载时不能只是返回类型不同,函数的除参数个数和类型不同外完全相同,否则会编译报错;有默认参数的参数必须从右往左规律有序赋值,参数的左侧必须都有默认值。