c ++ 学习 之函数重载

在C++中,函数重载(Function Overloading)是一种允许你定义多个同名函数,但它们在参数数量、类型或顺序上有所不同。编译器会根据函数调用时提供的参数信息,自动选择调用匹配的重载函数。函数重载可以使代码更具灵活性,允许你使用相同的函数名来处理不同情况下的操作。

以下是关于C++中函数重载的详细讲解:

函数特征:

函数重载的关键是函数特征,它包括函数的名称、参数数量、参数类型和参数顺序。编译器使用函数特征来决定调用哪个重载函数。
两个函数如果在参数特征上有区别,就可以被重载,不论返回类型是否相同。
函数重载的规则:

重载函数必须有相同的函数名。
重载函数的参数列表必须不同。参数列表可以在数量、类型或顺序上有所不同。
返回类型通常不是重载函数的区分标志,因此不同的返回类型不能作为函数重载的标志。
示例:

#include 

// 函数重载示例
int add(int a, int b) {
    return a + b;
}

double add(double a, double b) {
    return a + b;
}

int add(int a, int b, int c) {
    return a + b + c;
}

int main() {
    std::cout << add(2, 3) << std::endl;            // 调用第一个重载函数
    std::cout << add(2.5, 3.7) << std::endl;        // 调用第二个重载函数
    std::cout << add(2, 3, 4) << std::endl;        // 调用第三个重载函数
    return 0;
}

在上述示例中,add 函数被重载了三次,分别接受不同数量的整数参数或浮点数参数。根据提供的参数,编译器将自动选择匹配的重载函数。

注意事项:

  • 调用函数时,编译器会根据提供的参数类型和数量来决定选择哪个重载函数。
  • 避免产生二义性:如果有多个重载函数能够匹配函数调用,会导致编译器报错。因此,函数的重载应该有足够的不同,以避免产生二义性。
  • 默认参数和函数重载:函数的默认参数可能影响重载的选择,因此要注意默认参数的位置和值。

函数重载是C++中强大的特性之一,它可以提高代码的可读性和灵活性,让你能够使用同一个函数名来处理不同情况下的逻辑。

我们来看一个极端的例子

#include 
using namespace std;

void fun1(int a, double b)
{
	cout << a;
	cout << b;
}

void fun1(double a, int b)
{
	cout << a;
	cout << b;
}

int main()
{
	fun1(1, 2);  // 错误,不知道调用哪一个函数
	fun1(1.1 , 2);  // 正确
	fun1(1 , 2.1 );  //正确
}

你可能感兴趣的:(c++,c语言,学习,算法,c++)