📜  C ++ |函数重载和默认参数问题5(1)

📅  最后修改于: 2023-12-03 14:59:36.607000             🧑  作者: Mango

C++ | 函数重载和默认参数问题

简介

在 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++ 中非常基本的功能,通过这两项功能,程序员可以更加灵活地使用函数,并能够简化代码结构,提高代码的复用性。需要注意的是,函数重载时不能只是返回类型不同,函数的除参数个数和类型不同外完全相同,否则会编译报错;有默认参数的参数必须从右往左规律有序赋值,参数的左侧必须都有默认值。