满足条件 同一个作用域下函数名称相同函数参数个数、类型、顺序不同 函数的返回值 不可以作为重载条件注意事项 加const和不加const的引用可以作为重载条件 函数重载碰到默认参数 注意避免二义性出现 登录后复制 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; //函数重载条件 //1、在同一个作用域 //2、函数名称相同 //3、参数个数、类型、顺序不同 //class Person //{ //public: // void func() 成员函数 而不是全局函数 // { // } //}; 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 func(int a, double b) //{ // cout << "func(int a ,double b)调用" << endl; //} void test01() { func(1,3.14); } //函数重载中 引用两个版本 //void myFunc(int a) //{ // cout << "myfunc(int a )调用" << endl; //} void myFunc(int &a) // int & a = 10; { cout << "myfunc(int &a )调用" << endl; } void myFunc(const int &a) // const int &a = 10; { cout << "myfunc( const int &a )调用" << endl; } void test02() { int a = 10; //myFunc(a);//需要避免二义性出现 } //函数重载碰到默认参数 注意避免二义性出现 void func2(int a , int b = 10) { } void func2(int a) { } void test03() { //func2(10); //出现二义性 } int main(){ //test01(); test02(); system("pause"); return EXIT_SUCCESS; } 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104. 原创作者: zaishu 转载于: https://blog.51cto.com/zaishu/11898323