广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中函数重载详解
  • 780
分享到

C++中函数重载详解

2024-04-02 19:04:59 780人浏览 薄情痞子
摘要

目录函数重载的概念函数重载的应用 为什么c++支持函数重载,而C语言不支持函数重载的概念 函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函

函数重载的概念

函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的 形参列表(参数个数 或 类型 或 顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。

函数重载的应用

1.比如以下代码,函数名一样,而参数的类型不同,在调用的时候编译器会根据传递的参数自动进行匹配。

2.在例如以下代码,我们进行编译,都可以编译成功。

 3.接下来看一个有趣的现象,将上述第二个例子中的第一个函数的最后一个参数改为缺省参数,此时调用f(1,2),编译器直接报错。其实这两个函数在语法上是构成重载的,但是当调用时,只给了两个参数,我们知道缺省参数可以不给,那么此时编译器就不知道调用哪个函数了,就出现了“调用不明确”的错误。

 为什么C++支持函数重载,而C语言不支持

C/C++ 中,一个程序要运行起来,需要经历以下几个阶段: 预处理、编译、汇编、链接。 1. 实际我们的项目通常是由多个头文件和多个源文件构成,而通过我们 C 语言阶段学习的编译链接,我们 可以知道,【当前a.cpp 中调用了 b.cpp 中定义的 Add 函数时】,编译后链接前, a.o 的目标文件中没有 Add的函数地址,因为 Add 是在 b.cpp 中定义的,所以 Add 的地址在 b.o 中。那么怎么办呢? 2. 所以链接阶段就是专门处理这种问题, 链接器看到 a.o 调用 Add ,但是没有 Add 的地址,就会到 b.o 的符 号表中找 Add 的地址,然后链接到一起。 3. 那么链接时,面对 Add 函数,连接器会使用哪个名字去找呢?这里每个编译器都有自己的函数名修饰规 则。 4. 由于 windows 下 vs 的修饰规则过于复杂,而 linuxGCc 的修饰规则简单易懂,下面我们使用了 gcc 演示了这个修饰后的名字。 5. 通过下面我们可以看出 gcc 的函数修饰后名字不变。而 g++ 的函数修饰后变成【 _Z+ 函数长度 + 函数名 + 型首字母】。

一、在Linux环境下采用C语言编译器编译后:函数名字的修饰没有发生改变。

二、采用C++编译器编译后:函数名字的修饰发生改变,编译器将函数参数类型信息添加到修改后的名字中。

通过这里就理解了 C 语言没办法支持重载,因为同名函数没办法区分。而 C++ 是通过函数修饰规则来区 分,只要参数不同,修饰出来的名字就不一样,就支持了重载。

到此这篇关于C++中函数重载详解的文章就介绍到这了,更多相关C++函数重载内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++中函数重载详解

本文链接: https://www.lsjlt.com/news/138243.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中函数重载详解
    目录函数重载的概念函数重载的应用 为什么C++支持函数重载,而C语言不支持函数重载的概念 函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函...
    99+
    2022-11-13
  • C++重载的奥义之函数重载详解
    目录一、基本定义        二、应用举例        三、非函数重载的情况四、函数重载的使用原则...
    99+
    2023-05-16
    C++ 函数重载 C++ 函数 C++ 重载
  • 详解C++函数类型与重载函数
    目录1.首先对重载函数,明确函数的返回类型不能决定重载函数的类别,即2.注意形参列表中的默认值,使用含默认参数的重载函数时可能会产生二义性。例:问题:总结 1.首先对重载函数,明确函...
    99+
    2022-11-12
  • C++超详细讲解函数重载
    目录1 函数重载的定义2 构成函数重载的条件3 编译器调用重载函数的准则4 函数重载的注意事项4.1 避开重载带有指定默认值参数的函数4.2 注意函数重载遇上函数指针4.3 C++编...
    99+
    2022-11-13
  • C++入门语法之函数重载详解
    目录写在前面1 函数重载的概念2 函数重载原理总结写在前面 关于C语言的编译与链接不懂的可以看一下下面的文章,先回顾一下以前的知识。 详解C语言的编译与链接 1 函数重载的概念 函数...
    99+
    2022-11-13
  • C++函数重载的细节图文详解
    前言:如果不想看论证,可以直接点击总结,跳转到最后 1、使用重载函数时,如果数据类型不匹配,C++尝试使用类型转换与形参进行匹配,如果转换后有多个函数能匹配上,编译器将报错; 论证如...
    99+
    2022-12-10
    c++函数重载例子 C++函数重载是什么 重载函数怎么写
  • C++函数重载介绍与原理详解
    目录函数重载函数重载的概念函数重载的原理(名字修饰)总结:extern “C”函数重载 函数重载的概念 函数重载是函数的一种特殊情况,C++允许在同一作用域中...
    99+
    2022-11-12
  • C++ 函数重载详情介绍
    文章转自微信公众号:Coder梁(ID:Coder_LT) 函数重载 函数重载还有一个别名叫函数多态,其实我个人感觉函数多态这个名字更好理解更恰当一些。 函数多态是C++在C语言基础...
    99+
    2022-11-12
  • C++函数重载的定义与原因详解
    目录引例函数重载的定义函数重载规则为什么C不支持函数重载而C++可以内部名称总结引例 如果要求你只能通过print函数,即能打印字符串,又能打印一个整型。 虽然在C语言中我们可以通过...
    99+
    2022-11-13
  • C++深入讲解函数重载
    目录函数重载概念重载依据值型别判断函数重载的规则名字粉碎-名字修饰函数重载 概念 在C++中可以为两个或者两个以上函数提供相同的函数名称,只要参数类型不同,或者参数数目不同,参数顺序...
    99+
    2022-11-13
  • C++之函数的重载
    目录一、C++ 函数重载1.重载规则2.匹配原则3.重载底层实现4.extern “C”总结一、C++ 函数重载 C++ 致力于简化编程,能过函数重名来达到简化编程的目的 1.重载规...
    99+
    2022-11-12
  • 一文详解C++子类函数为什么不能重载父类函数
    先说结论: 子类成员函数的函数名和基类一样,但是函数声明与基类不一样的时候,不会和基类函数构成重载,而是会隐藏基类函数 简要回顾下C++中的基本概念: 重写(override): 基...
    99+
    2022-11-13
  • C++深入浅出讲解函数重载
    目录前言函数重载1.1 函数重载的概念1.2 函数重载的意义1.3 名字修饰(name Mangling)1.4 extern "C"前言 自然语言中,一个词可以...
    99+
    2022-11-13
  • C++超详细分析函数重载的使用
    目录一、函数重载分析(上)1.1 重载的定义1.2 函数重载的定义1.3 函数重载需要满足的条件1.4 编译器调用重载函数的准则1.5 函数重载的注意事项1.6 小结二、函数重载分析...
    99+
    2022-11-13
  • C++中怎么进行函数重载
    今天就跟大家聊聊有关C++中怎么进行函数重载,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。函数重载要求编译器能够***地确定调用一个函数时应执行哪个函数代码,即采用哪个函数实现。确定...
    99+
    2023-06-17
  • 深入了解C++函数重载解析策略
    参考《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,张海龙 袁国忠译,人民邮电出版社。C++ 使用重载解析策略来决定为函数调用使用哪一个函数定义。...
    99+
    2022-11-13
    C++函数重载解析 C++函数重载
  • C++中的运算符重载详解
    目录1、引例2、类中自动建立的函数3、重载赋值运算符解析总结1、引例 class Complex { private: double Real,Image; public: ...
    99+
    2022-11-13
  • C++中的函数重载问题及解决方法
    C++中的函数重载问题及解决方法引言:函数重载是C++中一种非常强大的特性,它允许在同一个作用域内定义多个同名函数,但函数的参数类型、个数或顺序不同。这样可以根据不同的参数选择不同的函数执行,提高代码的灵活性和可读性。然而,在实际编程过程中...
    99+
    2023-10-22
    C++编程 函数重载问题 函数重载解决方法
  • Java 重载、重写、构造函数的实例详解
    Java 重载、重写、构造函数的实例详解方法重写重写只能出现在继承关系之中。当一个类继承它的父类方法时,都有机会重写该父类的方法。一个特例是父类的方法被标识为final。重写的主要优点是能够定义某个子类型特有的行为。class Animal...
    99+
    2023-05-31
    java 重载 重写
  • 详解C++中赋值,关系,函数调用运算符重载的实现
    目录赋值运算符重载类结构问题的出现具体实现关系运算符重载类结构具体实现函数调用运算符重载类结构具体实现总结赋值运算符重载 在C++中基本数据类型例如整型,可以实现连续赋值:a=b=c...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作