函数重载作用:函数名相同,提高复用性
函数重载满足条件:
1. 同一个作用域下
2. 函数名称相同
3. 函数参数类型不同,或者个数不同,或者顺序不同
注:函数的返回值不可以作为函数重载的条件
#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(int a)的调用" << endl; } void func(int a, double b) { cout << "func(int a)的调用" << endl; } void func(double a, int b) { cout << "func(int a)的调用" << endl; } // 注意事项 // 函数返回值不可以作为函数重载的条件 //int func(double a, int b) //{ // cout << "func(int a)的调用" << endl; //} int main() { // func(); //占位参数必须填补 // func(10); // func(3.14); //func(10, 3.14); //func(3.14, 10); system("pause"); return 0; }
函数重载注意事项:
1. 引用作为重载条件
2. 函数重载碰到函数默认参数
#include<iostream> using namespace std; // 函数重载的注意事项 // 1、引用作为重载的条件 void func(int &a) // int &a = 10; 不合法 { cout << "func(int &a)调用" << endl; } void func(const int &a) // const int &a = 10; { cout << "func(const int &a)调用" << endl; } // 2、函数重载碰到默认参数 void func2(int a, int b = 10) { cout << "func2(int a, int b)的调用" << endl; } void func2(int a) { cout << "func2(int a)的调用" << endl; } int main() { //int a = 10; //func(a); // func(10); // func2(10); // 当函数重载碰到默认参数,出现二义性 // 错误,尽量避免这种情况 system("pause"); return 0; }