基本概念:

作用:函数名可以相同,提高复用性

函数重载满足的条件:
1.同一作用域

2.函数名相同

3.函数参数类型不同,个数不同,顺序不同

基本规则就上面那几条,不多说了,开始难一些的东西:

1.函数的返回类型不能当作重载的条件:

void func()
{cout << "我好帅" << endl;
}int func()
{cout << "我好帅" << endl;
}

以上代码会出现下图报错,也就是说一个是void  另外一个是int返回类型不同的函数,不满足重载函数的条件

2.引用作为函数重载的条件:

#include<iostream>
using namespace std;void func(int &a)
{cout << "func(int &a)的调用" << endl;
}void func(const int &a)
{cout << "func(const int &a)的调用" << endl;
}int main()
{int a = 10;       //调用第一个函数  相当于int &a = a;func(a);          //a = 10;system("pause");return 0;
}

运行结果

表明了运行第一个函数  相信大家这个应该都能懂

#include<iostream>
using namespace std;void func(int &a)
{cout << "func(int &a)的调用" << endl;
}void func(const int &a)
{cout << "func(const int &a)的调用" << endl;
}int main()
{func(10);     //第一个函数int &a = 10不合法system("pause");return 0;
}

如果直接调用第一个函数的话  会报错  报错结果如下:

因此直接调用func(10)的话,相当于上述代码中的第一个函数的参数调用不合法;而第二个函数因为前有const修饰因此可以直接调用!!!

至于这个const int &a = 10可以直接调用:::::

     重点来了:引用的本质就是指针常量 指向的地址不可变 但是可以对地址内存的数据进行操作

  前有const修饰的话 相当于:

const int& a = 10;    //相当于int temp = 10;//const int &a = temp;

上述代码中的注释都是编译器识别到a是引用之后自动在编译器中完成,你知道有这个规则即可!!!

3.函数重载遇到默认参数:

#include<iostream>
using namespace std;int func(int a, int b = 20)
{return a + b;
}int func(int a)
{return a + b;
}int main()
{func(30);system("pause");return 0;
}

运行结果会报错:

因为func(30)调用上面两个函数都可以通过,出现了二义性。当然要是func(30,10)这样的话 ,只能调用第一个,毕竟第一个函数有两个参数!!!

现在所偷的懒,以后会数倍返还与你所流的汗!!!

函数重载需要注意的点相关推荐

  1. C++ 笔记(13)— 函数(函数声明、函数定义、函数调用[传值、指针、引用]、函数参数默认值、函数重载)

    每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 1. 函数声明 函数声明告诉编译器函数的名称.返回类型和参数.函数声明包括以下几个部分: ret ...

  2. JavaScript中实现函数重载和参数默认值

    2019独角兽企业重金招聘Python工程师标准>>> 参数默认值是指在调用函数时,若省略了某个实参,函数会自动为该参数分配一个默认值,使得函数调用的方便性和灵活性大大提高. 举个例 ...

  3. 《C++成员函数重载、覆盖与隐藏》

    <成员函数的重载.覆盖与隐藏> ------------------------------------------------------------------------------ ...

  4. 函数重载(overload)

    函数重载(overload) 先看一个例子 #include<iostream> using namespace std; //计算两个参数a,b的乘积的函数 int multiply(i ...

  5. 函数重载和 函数模板

    一.函数重载(overload) #include <iostream> using namespace std;//计算两个参数a,b的乘积的函数 int product(int a,i ...

  6. C++类成员函数重载问题

    C++类成员函数重载问题 #include <iostream> using namespace std; class A {private: int a;int b; public:A( ...

  7. c++学习笔记内联函数,函数重载,默认参数

    c++学习笔记内联函数,函数重载,默认参数 1 inline内联函数 C++中的const常量可以替代宏常数定义,如: const int A = 3;  #define A 3 C++中是否有解决 ...

  8. 在python中定义类时、运算符重载_自定义 Python 类中的运算符和函数重载(上)...

    如果你对 Python 中的str对象使用过 + 或 * 运算符,你一定注意到了它的操作与 int 或 float 类型的区别: 你可能想知道同一内置运算符或函数如何对不同类对象进行不同操作的.这分别 ...

  9. 函数重载(续)==》函数重载和函数指针在一起

    函数重载与函数指针(这一块很重要,后续要继续学习): 当使用重载函数名对函数指针赋值时 根据重载规则挑选与函数指针参数列表一致的候选者 严格匹配候选者的函数类型与函数指针的函数类型 #include ...

最新文章

  1. Open Source: 开源软件许可的选择
  2. 机器学习的理论知识点总结
  3. SAP UI5 应用开发教程之十二 - 使用 CSS 类对 UI 进行进一步美化
  4. 漫画:什么是布隆算法
  5. Server Develop (三) 多进程实现C/S
  6. des和aes相比较有哪些特点_栓流气力输送相比较传统的高速气力输送方式而言,有哪些优势?...
  7. Linux安装之Linux mint
  8. Latex初学者入门
  9. 第一个scrum会议
  10. 机械臂速成小指南(五):末端执行器
  11. 机器视觉工程师之关于程序员的头发
  12. 豆豆趣事[2014年04月]
  13. 【图片新闻】美海军的下一艘战舰与“祖姆沃尔特”DDG-1000极其相似
  14. 【程序设计训练】棋盘
  15. grad-cam原理
  16. eclipse中输入中文为繁体
  17. 从零开始学习主成分分析
  18. Form通过js提交
  19. Graphic32中TBitmap32.TextOut性能分析[转载]
  20. SIP与P2P的技术携手创造奇迹?

热门文章

  1. OFRecord 图片文件制数据集
  2. MindSpore平台系统类
  3. 定制语音代理(智能体)的背后是什么?
  4. Android报错:java.lang.NoClassDefFoundError: Failed resolution of: Ljava/util/Base64;如何解决
  5. HarmonyOS 设置图标在Text 旁边
  6. RxJava firstElement 与 lastElement 以及 elementAt
  7. android 键盘右下角回车改为搜索
  8. github一些常见命令
  9. express+ejs搭建的留言
  10. C#事件-使用事件需要的步骤