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

📅  最后修改于: 2023-12-03 15:13:58.076000             🧑  作者: Mango

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

在 C++ 中,函数重载和默认参数是常见的特性。它们可以提高代码的可读性、可维护性和可重用性。

函数重载

函数重载是指在同一个作用域内定义多个同名函数,它们的参数列表不同(参数类型、参数个数、参数顺序等),这样在调用函数时就可以根据传递的参数自动匹配到正确的函数。

下面是一个简单的例子,演示了函数重载的用法:

#include <iostream>

void print(int x) {
    std::cout << "The integer value is: " << x << std::endl;
}

void print(double x) {
    std::cout << "The double value is: " << x << std::endl;
}

int main() {
    print(10);
    print(3.14);
    return 0;
}

输出结果:

The integer value is: 10
The double value is: 3.14

print(int)print(double) 都是同名函数,但它们的参数类型不同,因此可以根据传递的参数类型自动匹配到正确的函数。

函数重载的注意事项:

  • 函数的返回值类型与函数重载无关。
  • 函数重载不可以仅仅以返回值类型区分函数。
  • 函数的参数个数、参数类型和参数顺序必须不同。
默认参数

默认参数是指在函数声明时,给部分参数指定一个默认值,调用函数时如果没有传递实参,则使用默认值。

下面是一个简单的例子,演示了默认参数的用法:

#include <iostream>

void print(int x, int y = 0, int z = 0) {
    std::cout << "The values are: " << x << ", " << y << ", " << z << std::endl;
}

int main() {
    print(1);
    print(2, 3);
    print(4, 5, 6);
    return 0;
}

输出结果:

The values are: 1, 0, 0
The values are: 2, 3, 0
The values are: 4, 5, 6

print 函数指定了两个默认参数 yz,调用时如果没有传递对应的实参,则使用默认值。可以看到,第一个调用只传递了一个实参,yz 的值都是默认值 0;第二个调用只传递了两个实参,z 的值是默认值 0

默认参数的注意事项:

  • 默认参数必须出现在函数参数列表的末尾。
  • 默认参数可以被重载。
函数重载和默认参数的结合使用

在函数中既可以使用函数重载,又可以使用默认参数,这样可以进一步增强函数的灵活性。

下面是一个例子,演示了函数重载和默认参数的结合使用:

#include <iostream>

void print(int x, int y = 0) {
    std::cout << "The values are: " << x << ", " << y << std::endl;
}

void print(double x, double y, double z = 0.0) {
    std::cout << "The values are: " << x << ", " << y << ", " << z << std::endl;
}

int main() {
    print(1);
    print(2, 3);
    print(4.0, 5.0);
    print(6.0, 7.0, 8.0);
    return 0;
}

输出结果:

The values are: 1, 0
The values are: 2, 3
The values are: 4, 5, 0
The values are: 6, 7, 8

print(int, int)print(double, double, double) 都是同名函数,但它们的参数类型和参数个数不同,因此可以根据传递的参数自动匹配到正确的函数。其中,print(int, int) 中的第二个参数使用了默认参数,print(double, double, double) 中的第三个参数也使用了默认参数。

总结

函数重载和默认参数是 C++ 中常见的特性,它们可以在一定程度上提高代码的可读性、可维护性和可重用性。熟练掌握函数重载和默认参数的用法,可以写出更加灵活、高效的函数。