函数 重载

函数 重载1 什么是函数重载 函数重在是指在同一个作用域内 有多个函数名相同 但是形参列表不同 参数类型不同 参数个数不同 参数顺序不同 返回值无关 我们将这种叫做重载函数 重载的函数是通过形参列表区分的 和其他无关 一句话来说 一个接口 多种实现 不仅函数可以重载 运算符也可以重载 例如 如果要实现一个加法运算 加法函数可以是整型也可以是浮点型 就可以使用函数重载实现 这样实现后 我们进行加法运算 则只需要调用 ADD 函数 编译器会根据我们传递实参的类型和个数 顺序判断想要调用那个 ADD 函数 注意 m

1.什么是函数重载?

函数重在是指在同一个作用域内,有多个函数名相同,但是形参列表不同(参数类型不同,参数个数不同,参数顺序不同),返回值无关,我们将这种叫做重载函数。重载的函数是通过形参列表区分的,和其他无关。一句话来说“一个接口,多种实现”,不仅函数可以重载,运算符也可以重载。
例如:如果要实现一个加法运算,加法函数可以是整型也可以是浮点型,就可以使用函数重载实现。

在这里插入图片描述

这样实现后,我们进行加法运算,则只需要调用ADD函数,编译器会根据我们传递实参的类型和个数,顺序判断想要调用那个ADD函数。

注意:main函数不能重载,因为程序的入口只能有一个。

2.为什么要有函数重载?

比如在C语言中,我们需要一个打印print函数来打印整型,字符型,字符串和地址,这些功能都简单类似,但是我们要把这些不同功能但类似的函数声明成不同的名字来让编译器进行区分。
void print_int(int a);
void print_char(char c);
void print_string(char *str);
而在C++中我们可以利用函数重载将名字统一起来:
void print(int a);
void print(char c);
void print(char *str);
函数重载可以减轻程序员记忆哪些功能类似的不同函数名字。













3.编译器如何解决函数重载时的命名冲突?

在这里插入图片描述
我们通过刚刚的学习,知道重载函数时根据形参列表进行区分的,一个函数声明由 返回值 + 函数名 + 参数列表构成,仔细看图,该图是vs2019编译映射的.map文件,我们可以分析得到:
?ADD@@YAHHH@Z
?代表开始
ADD代表函数名
@@YA代表参数的开始
第一个H代表返回值类型int
后面的H代表int参数,M代表float参数。











4.函数重载是C++的一种特性?

C语言没有函数重载,C++有重载的概念,函数重载是C++多态中静态多态的一种体现,一个源程序在经过预处理,编译,汇编,链接成为可执行程序的过程是吧代码联编在一起的过程,在运行之前就完成的联编称为静态联编。静态多态还有一种模版。
动态多态(动态绑定)体现在虚函数。



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229984.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午3:24
下一篇 2026年3月16日 下午3:24


相关推荐

  • 如何使用pymysql连接MySQL数据库

    如何使用pymysql连接MySQL数据库如何使用 pymysql 连接 MySQL 数据库一直以来都是使用 pymysql 库来连接 MySQL 数据库进行数据处理 记录下使用方法安装安装过程非常简单 直接使用 pip 安装即可 pipinstallpy 使用使用之前先进行导入 importpandas 建立连接和游标 connection pymysql connect host 192 168 0 0 服务器 ip 地址 port 3306 mysql

    2026年3月19日
    2
  • 电商社交数据在大数据风控的应用实践

    电商社交数据在大数据风控的应用实践

    2022年3月3日
    29
  • Dubbo常用协议之Dubbo协议与Hessian协议解析

    Dubbo常用协议之Dubbo协议与Hessian协议解析前言 Dubbo 允许配置多协议 在不同服务上支持不同协议或者同一服务上同时支持多种协议 不同服务在性能上适用不同协议进行传输 比如大数据用短连接协议 小数据大并发用长连接协议 Dubbo 协议 Dubbo 缺省协议采用单一长连接和 NIO 异步通讯 适合于小数据量大并发的服务调用 以及服务消费者机器数远大于服务提供者机器数的情况 反之 Dubbo 缺省协议不适合传送大数据量的服务 比如传文件 传视频等 除非请求量很低 Dubbo 协议能使用的传输方式 mina netty grizzyDubbo 协议能

    2026年3月16日
    2
  • Linux下安装mysql-8.0.21

    Linux下安装mysql-8.0.21转载原文https://www.jianshu.com/p/4587e9429702下面记录了我在Linux(Centos7)环境下安装Mysql的完整过程,实操记录,绝非水文,如有错误或遗漏,欢迎指正。安装过程中务必保证文件路径的前后统一,否则可能会导致不可预期的结果,推荐直接使用文中的命令进行操作。一安装前准备1、检查是否已经安装过mysql,执行命令[root@localhost/]#rpm-qa|grepmysql从执行结果,可以看出我们已经安装了

    2022年5月10日
    66
  • JS闭包的理解

    JS闭包的理解闭包的简介 闭包就是能够读取其他函数内部变量的函数 只有函数内部的子函数才能读取局部变量 在本质上 闭包是函数内部和函数外部连接起来的桥梁 闭包的定义 如果在一个内部函数里 对在外部作用域 但不是全局作用域 的变量进行引用 那么内部函数就被认为是闭包 closure 闭包的特点 可以读取自身函数外部的变量 沿着作用域链寻找 先从自身开始查找 如果自身没有才会继续往上级查找 自身如果拥

    2026年3月26日
    2
  • Python关键字及其含义

    Python关键字及其含义关键字含义 False 布尔类型的值 表示假 与 True 相对 None 表示什么也没有 自己的数据类型 NoneTypeTrue 布尔类型的值 表示真 与 False 相反 and 用于表达式运算 逻辑与操作 as 用于类型转换 assert 断言 用于判断变量或者条件表达式的值是否为真 break 中断循环语句的执行 class 用于定义类 cont

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号