11.3 函数重载概述

    技术2022-07-11  71

    11.3 函数重载概述

    函数的重载就是一个函数名称可以有多个实现,那么我们怎么准确地调用想要的那个函数呢?重载的函数形参不同。

    函数重载必须要在同一作用域;函数的名称要相同;函数的参数类型、参数个数、参数顺序至少一个不同。 下面演示函数func的四个重载版本及其调用。 #include<iostream> using namespace std; //函数重载的条件 //1、在同一个作用域 //2、函数名称相同 //3、函数的 参数类型 或者 个数 或者 顺序 不同 void func() { cout << "func的调用" << endl; } void func(int a) { cout << "func(int a)的调用" << endl; } void func(double a) { cout << "func(double a)的调用" << endl; } void func(int a, double b) { cout << "func(int a,double b)的调用" << endl; } void func(double a, int b) { cout << "func(double a, int b)的调用" << endl; } int main() { func(); func(10); func(3.14); func(10, 3.14); func(3.14, 10); }

    函数重载注意事项:

    函数返回值不能作为重载的依据; 例如,下面的函数重载会报错: void func() { } int func() { return 0; }

    引用作为重载的条件时要注意调用优先级。 当实参为变量时优先调用不带const;实参为常量时优先调用带const的。 #include<iostream> using namespace std; void func(const int& a) { cout << "func(const int& a)的调用" << endl; } void func(int& a) { cout << "func(int& a)的调用" << endl; } int main() { int a = 10; func(a); func(10); system("pause"); return 0; } 函数重载碰到默认参数时,调用时会出现错误,必须要把默认参数也传进去。 #include<iostream> using namespace std; void func(int a, int b = 10) { cout << "func2(int a)" << endl; } void func(int a) { cout << "func2(int a)" << endl; } int main() { func(10); func(10, 20); system("pause"); return 0; }

    可以看到,把参数补全没报错,只填一个参数的报错了。

    Processed: 0.011, SQL: 9