1、 什么是重载函数

假设同一作用域内的几个函数名字同样但形參列表不同。那么这些函数就称之为——重载函数。

比如:

void print( const char *cp);

void print(const int *begin , const int *end);

void print(const int ia[], int size);

上面的这些构造函数运行的操作很的相似。都是打印一些数据。可是接受的形參却不一样。 当调用这些函数时,编译器会依据传递的实參类型判断想要运行的是哪个函数。

比如:

int j[2] = {0,1};

print(“hello world”);  //调用print( const char *cp);

print(begin(j),end(j));  //调用print(const int *begin , const int *end);

print(j, end(j) - begin(j)); //调用print(const int ia[], int size);

2、重载函数的作用:

函数的名字不过让编译器知道它调用的是哪个函数,而函数重载能够在一定程度上减轻程序猿起名字、记名字的负担。

3、 定义重载函数的注意点

①不同意两个函数除了返回类型外其它全部的元素都同样。

即假设两个函数返回值不同。形參列表同样,那么第二个函数的申明时是错误的。

②有些形參列表看起来不一样,可是实际上是同样的,比方:

bool lookup(const Account &acct);

bool lookup(const Account & );  //省略了形參,可是实际上是一样的

bool lookup(Phone);

bool lookup(const Phone);  //反复申明

③假设形參是某种类型的指针或引用。则上诉情况会不同,比如:

bool lookup(Account &);     //作用于Account的引用

bool lookup(const Account &);//作用于常量引用

bool lookup(Account *);     //作用于指向Account的指针

bool lookup(const Account &);//作用指向常量的指针

在上面的四个函数中,编译器通过实參是否是常量来判断应该调用哪个函数。由于const不能转换成其它类型,所以仅仅能把const对象(或者指向const的指针)传递给const形參。相反的,由于很量能够转换成const,所以上面的4个函数都能够作用很量对象或者指向很量对象的指针。只是,当我们传递很量对象时。编译器会优先选用很量版本号的函数。

4、 调用重载函数

重载函数存在的意义在于减轻程序猿记函数名称和个给函数取名的负担,因此在调用重载函数时,要明白的差别调用的重载函数形參列表的不同。要么形參列表的数量不同。要么类型差异较大。

在调用重载函数时。编译器会依据传入的实參的类型或者数量的不同来确定调用的是哪个重载函数。

一般的调用重载函数会有三种可能:

①编译器找到一个与实參最佳匹配的函数,并调用该函数的代码。

②找不到不论什么一个函数与调用的实參匹配,此时编译器发出“无匹配”错误。

③有多个函数能够匹配。可是每个都不是明显的最佳选择。此时编译器发出“二义性调用”错误。

C++学习笔记(十二):重载函数相关推荐

  1. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  2. OpenCV学习笔记(十二)——图像分割与提取

    在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...

  3. 吴恩达《机器学习》学习笔记十二——机器学习系统

    吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...

  4. ROS学习笔记十二:使用roswtf

    ROS学习笔记十二:使用roswtf 在使用ROS过程中,roswtf工具可以为我们提供ROS系统是否正常工作的检查作用. 注意:在进行下列操作之前,请确保roscore没有运行. 检查ROS是否安装 ...

  5. Polyworks脚本开发学习笔记(十二)-输出和读取文本文件

    Polyworks脚本开发学习笔记(十二)-输出和读取文本文件 Polyworks作为一个测量工具,将测量的数据方便的导出到文本文件则是一项必须的功能.在DATA_FILE这个命令下提供了很多子命令用 ...

  6. 【现代机器人学】学习笔记十二:轮式移动机器人

    目录 轮式机器人类型 全向轮式机器人 建模 单个全向轮是怎么运动的 多个全向轮是如何带动底盘运动的 运动规划和反馈控制 非完整约束轮式移动机器人 建模 独轮车 差速驱动机器人 车型机器人 非完整移动机 ...

  7. 【theano-windows】学习笔记十二——卷积神经网络

    前言 按照进度, 学习theano中的卷积操作 国际惯例, 来一波参考网址 Convolutional Neural Networks (LeNet) 卷积神经网络如何应用在彩色图像上? 卷积小知识 ...

  8. (C/C++学习笔记) 十二. 指针

    十二. 指针 ● 基本概念 变量的地址就是指针,存放指针的变量就是指针变量(因而又叫作地址变量 address variable); 这个地址编号本身就是一个无符号的整数,在32位系统下为4字节(8位 ...

  9. Vue.js 学习笔记 十二 Vue发起Ajax请求

    首先需要导入vue-resource.js,可以自己下载引入,也可以通过Nuget下载,它依赖于Vue.js. 全局使用方式: Vue.http.get(url,[options]).then(suc ...

  10. Programming Computer Vision with Python (学习笔记十二)

    ORB(Oriented FAST and Rotated BRIEF)可用来替代SIFT(或SURF),它对图像更具有抗噪特性,是一种特征检测高效算法,其速度满足实时要求,可用于增强图像匹配应用. ...

最新文章

  1. IJCAI 2021 医药AI必读论文推荐
  2. PCB 线宽与电流关系
  3. Sinon.JS Sinon.JS
  4. go语言入门经典_Go 语言中的 gRPC 基础入门
  5. Netty基本使用流程代码
  6. 文巾解题 994. 腐烂的橘子
  7. Codeforces 516D Drazil and Morning Exercise (栈、二分)
  8. HTML与JS交换值
  9. OWASP出品:Xenotix XSS漏洞测试框架及简单使用
  10. Netty实战 IM即时通讯系统(二)Netty简介
  11. 通过多说服务器缓存加速Gravatar 头像
  12. SpringCloud主要组件
  13. 蚂蚁回应渠道之争;微软更新致大规模服务中断;OpenSSH 8.4 发布 | 极客头条
  14. Atitit html5.1 新特性attilax总结
  15. 关于改进建议几个方面的有效实践
  16. 使用电子签章确立电子劳动合同的法律效力
  17. Flask的路由、蓝图和装饰器
  18. 猎人华为单机离线版(一键启动增强版+扩展工具箱2022) | 猎人维修大师免加密狗单机永久版 | 华为线刷工具(MRT HW Flash Tool) | 华为工具(MRT HW Tool_V3.3)
  19. 安卓性能优化——布局性能优化
  20. low memory killer

热门文章

  1. 21天Jenkins打卡Day3-新建item保存构建
  2. 看到这个数据库设计,我终于明白了我和其他软测人的差距
  3. mysql c接口_mysql C语言API接口及实例
  4. python收集参数_Python 中函数的 收集参数 机制
  5. c++ 文件读写_串行FLASH 文件系统FatFs
  6. python遍历字典的具体位置_python遍历字典
  7. c语言银行家算法模拟程序,银行家算法C语言模拟程序
  8. 3.6 - Maya Commands: setAttr
  9. pytorch数据增强
  10. Dropout抑制过拟合与超参数选择