C++函数重载指的是在同一个作用域内,允许存在多个同名函数,但是函数的参数类型、参数个数或者参数顺序不同。函数重载的实现方法主要有两种:一种是函数的参数类型、参数个数或者参数顺序不同,另一种是使用函数模板。
第一种实现方法:参数类型、参数个数或者参数顺序不同
在同一个作用域内,可以定义多个同名函数,只要它们的参数类型、参数个数或者参数顺序不同。当调用函数时,编译器会根据调用函数时的参数类型、参数个数或者参数顺序,自动选择正确的函数。例如,定义两个同名函数,只要参数类型、参数个数或者参数顺序不同,就可以实现函数重载:
int add(int a, int b) { return a + b; } float add(float a, float b) { return a + b; }
当调用add函数时,编译器会根据调用函数时的参数类型、参数个数或者参数顺序,自动选择正确的函数:
int c = add(1, 2); // 调用int add(int a, int b)函数 float d = add(1.2f, 3.4f); // 调用float add(float a, float b)函数
第二种实现方法:使用函数模板
函数模板是C++的一种特殊技术,可以用来实现函数重载。函数模板是一种泛型编程技术,可以根据传入的参数类型自动生成函数,从而实现函数重载。例如,定义一个函数模板:
templateT add(T a, T b) { return a + b; }
当调用add函数时,编译器会根据调用函数时的参数类型,自动生成正确的函数:
int c = add(1, 2); // 编译器会自动生成int add(int a, int b)函数 float d = add(1.2f, 3.4f); // 编译器会自动生成float add(float a, float b)函数
可以看到,使用函数模板可以很方便地实现函数重载。