重载定义:

在 C++中,我们把具备相同功能的函数整合都一个函数上,而不必去写好多个函数名不同 的函数,这就 叫函数重载。

实作举例

比如我们要编写一个函数求一个数的 绝对值(但是整数,浮点型数,双精度型数)都有绝对值,但是我们为他们编写的函数返回值类型却是各不相同的比如:

int iabs(int a);
float fabs(float a);
double dabs(double a);

// main.cpp##include<iostream>
using namespace std;int abs(int a); // 当参数为整型数据 时的函数原型
float abs(float a);//当参数为浮点型数据时的函数原型
double abs(double a);//当参数为双精度型数据时 的函数原型// 定义函数int abs(int a) {// 打印调用了哪个函数cout << "call:int abs()" << endl;return (a >= 0 ? a : -a);
}float abs(float f) {cout << "call:float abs()" << endl;return (f >= 0 ? f : -f);
}double abs(double d) {cout << "call:double abs()" << endl;return (d >= 0 ? d : -d);}int main() {int a = -5;float f = -2.4f;double d = -3e-6;// 输出函数的结果cout << "a= " << abs(a) << endl;cout << "f= " << abs(f) << endl;cout << "e= " << abs(d) << endl;
}

结论:

运行结果表明:abs函数能够处理三种不同数据类型的数据,那么我们应该怎样编写重载函数了 ?

1:同一个函数写上多种函数原型

2:给这些函数写上定义

3:编译器依靠函数声明时参数个数,参数数据类型,参数顺序来判断到底运行那个函数,如果重载函数参数表完全相同,编译器是找不到到底运行哪个函数的,这个时候,程序就会报错。比如:int func(int a,char b) 和  float func(int a,char c) 这是不能重载的,在语法上就不能通过,直接报错:不能重载,仅依靠函数的返回值。

4:但是 在调用一个函数重载的时候,也可能会发生找不到一个完全合适的函数,这时候,就需要进行数据类型的 转换 ,但是由于这种方法可能导致数据丢失或者数据类型不严格符合 而报错,所以这种情况应该尽量避免。

C++:函数重载:函数重载深入解析相关推荐

  1. getline没有与参数列表匹配的重载函数_C++新增基础功能解析—函数重载功能的使用...

    喜欢的可以收藏转发加关注 "函数重载"指的是可以有多个同名的函数,因此 名称进行了重载.这两个术语指的是同一回事,但我们通常使用函数重载.可以通过函数重载来设计• 系列函数--它们 ...

  2. c++类指针赋值表达式必须是可修改的左值_C++学习刷题8--复制构造函数和赋值运算符重载函数...

    一.前言 本部分为C++语言刷题系列中的第8节,主要讲解这几个知识点:复制构造函数和赋值运算符重载函数.欢迎大家提出意见.指出错误或提供更好的题目! 二.知识点讲解 知识点1:复制构造函数 1.当依据 ...

  3. c++ 复制构造函数_C++学习刷题8--复制构造函数和赋值运算符重载函数

    一.前言 本部分为C++语言刷题系列中的第8节,主要讲解这几个知识点:复制构造函数和赋值运算符重载函数.欢迎大家提出意见.指出错误或提供更好的题目! 二.知识点讲解 知识点1:复制构造函数 1.当依据 ...

  4. 浅谈细说 JS 函数(call,apply,重载)

    什么是函数? 引用 W3School 的原话:函数是一组可以随时随地运行的语句. 函数是 ECMAScript 的核心. 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及 ...

  5. python计算复数的辐角_Python 自定义类中的函数和运算符重载

    如果你曾在字符串(str)对象上进行过 + 或 * 运算,你一定注意到它跟整数或浮点数对象的行为差异: >>> # 加法 >>> 1 + 2 3 >>& ...

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

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

  7. error C2733: 不允许重载函数的第二个 C 链接

    今日写程序,出现了如下bug: 错误: "error C2733: 不允许重载函数的第二个 C 链接"     一开始看到错误,反复查看函数声明和实现完全没问题,不知道错误出在了哪 ...

  8. 构造函数不能为虚/重载函数总结

    构造函数不能为虚/重载函数总结 作为一个类,他最基础的成员函数就要数构造函数了.这里我们先探讨一下构造函数为什么不能是虚函数. 在解决这个问题之前,要先明白类中函数的调用方式.一个类的函数共用一个函数 ...

  9. 中双目运算符_C++日志(四十)教你如何以非成员函数的形式重载运算符

    上一篇日志中讲述了如何通过类的非静态函数成员,进行运算符重载: 机器学习入坑者:C++日志(三十九)教你如何以类的非静态成员函数形式重载运算符​zhuanlan.zhihu.com 在C++中,同样可 ...

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

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

最新文章

  1. CSS实现跨浏览器兼容性的盒阴影效果
  2. 利用html5标签audio在不同客户端下适配播放音频
  3. ffmpeg命令行map参数的使用
  4. CMMI3组织级文档列表清单
  5. centos6.8安装oracle12C 详细步骤讲解
  6. 学习笔记-记ActiveMQ学习摘录与心得(二)
  7. C/C++中static与const的区别与联系
  8. Spring Cloud - Nacos 注册中心入门单机模式及集群模式
  9. 一文带你了解夜间灯光数据
  10. 批量替换文件字体,简体-繁体
  11. CAJ浏览器看论文如何设置背景为护眼色
  12. AI(人工智能)园区顶层设计方案(ppt)
  13. 21世纪十大营销法则
  14. 知名大企业的愿景和使命
  15. “丧心病狂” kite
  16. 计算机无法打开这个应用,win10照片应用打不开提示“无法打开这应用”如何解决...
  17. 求int所能表示的最大整数
  18. Oracle的常见错误及解决办法
  19. 3d游戏建模|3D电影、游戏角色是怎么制作的?
  20. 基础知识 | hex文件格式详解

热门文章

  1. 唱歌如何更好听? KTV调音师帮你忙
  2. React 模拟点击事件
  3. 协议 驱动 接口 服务器,TCP/IP 协议底层驱动原理 (含网卡芯片读写) 说明 [撸 swoole 和 workerman 的同学建议瞧瞧]...
  4. 《工程伦理》网课第十章课后习题答案
  5. Oracle 错误总结及问题解决 OR
  6. VS中实时获取SVN的版本号并写入到AssemblyInfo.cs中(C#)
  7. 程序员来聊一聊信用卡(一)——年轻人该不该办理一张信用卡
  8. DSO Framer ActiveX 控件
  9. 解决java.lang.IllegalArgumentException
  10. jshint详细说明【vscode插件】