【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?

这篇具有很好参考价值的文章主要介绍了【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言

🎥 屿小夏 : 个人主页
🔥个人专栏 : C++入门到进阶
🌄 莫道桑榆晚,为霞尚满天!

📑前言

在上一篇文章中我们了解到了命名空间和缺省函数的存在,以及C++为什么要引入它们。本章将继续C++在C语言上扩展出的语法,以帮助大家快速入门。函数竟然还有内联的形式?函数重载,重载的是什么?本篇文章都将会做讲解。

🌤️函数重载

☁️函数重载的概念

是指在同一个作用域内,可以有多个同名函数,但它们的参数列表必须不同(参数类型、参数个数或参数顺序不同)

☁️函数重载的作用

  1. 提高代码的可读性和可维护性:通过使用相同的函数名来表示一组相关的功能,可以使代码更加清晰和易于理解。
  2. 简化函数调用:不同的参数列表可以根据不同的情况选择合适的函数进行调用,避免了编写大量的条件判断语句。
  3. 提供更多的灵活性:通过函数重载,可以根据需要提供多种不同的函数实现,满足不同的需求。

☁️C++支持函数重载的原理

C++支持函数重载,但是C语言不支持函数重载,这是为什么呢?
在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接 。
【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言

【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言

  1. 实际项目通常是由多个头文件和多个源文件构成,当前a.cpp中调用了b.cpp中定义的Add函数时,编译后链接前,a.o的目标文件中没有Add的函数地址,因为Add是在b.cpp中定义的,所以Add的地址在b.o中。那么怎么办呢?

  2. 链接阶段就是专门处理这种问题,链接器看到a.o调用Add,但是没有Add的地址,就会到b.o的符号表中找Add的地址,然后链接到一起。

  3. 链接时,面对Add函数,链接接器会使用哪个名字去找呢?这里每个编译器都有自己的函数名修饰规则。

Windows下vs修饰规则过于复杂,Linux下g++修饰规则简单易懂,下面使用g++演示这个修饰后的名字。

C语言编译后:函数名字的修饰没有发生改变。
【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言

C++编译后:函数名字的修饰发生改变,编译器将函数参数类型信息添加到修改后的名字中。
【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言

以上我们可以看出gcc的函数修饰后名字不变。而g++的函数修饰后变成【_Z+函数长度+函数名+类型首字母】。

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

如果两个函数函数名和参数是一样的,返回值不同是不构成重载的,因为调用时编译器没办法区分。

🌤️内联函数

☁️内联函数的概念

内联函数是一种特殊的函数,它在调用时会被直接展开,而不是通过函数调用的方式进行执行。它通常被用来替代宏,以提高代码的执行效率和可读性。

【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言

【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言

如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用.

☁️内联函数的作用

  1. 提高代码的执行效率:由于内联函数在调用时会被直接展开,避免了函数调用的开销,可以减少函数调用的时间消耗。
  2. 提高代码的可读性:内联函数可以将一些简单的代码片段直接嵌入到调用处,使代码更加紧凑和易于理解。

☁️内联函数的特性

  1. 函数体内的代码比较简单:由于内联函数在调用时会被直接展开,因此函数体内的代码应该比较简单,避免展开后的代码过于庞大。
  2. 函数体内不能有循环语句和递归调用:由于内联函数在调用时会被直接展开,如果函数体内有循环语句或递归调用,展开后的代码可能会过于庞大,影响代码的执行效率。
  3. 函数声明和定义必须放在同一个文件中:为了能够在调用处展开函数体,编译器需要在调用处获得函数的定义,因此函数的声明和定义必须放在同一个文件中。
  4. 内联函数适用于频繁调用、代码量较小的函数:由于内联函数在调用时会被直接展开,因此适用于频繁调用、代码量较小的函数。对于代码量较大的函数,由于展开后的代码可能会过于庞大,可能会导致可执行文件的体积增大,从而反而降低代码的执行效率。

【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言

🌤️全篇总结

​ 本章我们知道了函数重载和内联函数的作用和特性使用,他们在以后的使用场景出现的频率是很高的。

☁️ 好了,由于篇幅有限,本章只讲解了两个点,后面还有几个点,后续会再出两篇文章,看完这些,你的c++就算是入门啦!
看到这里了还不给博主留个:
👍 点赞🌟收藏 ⭐️ 关注!
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。
【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?,C++编程世界,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-736317.html

到了这里,关于【c++速通】入门级攻略:什么是内联函数?函数重载又是什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++学习】C++入门 | 缺省参数 | 函数重载 | 探究C++为什么能够支持函数重载

    上一篇文章我介绍了C++该怎么学,什么是命名空间,以及C++的输入输出, 这里是传送门:http://t.csdn.cn/Oi6V8 这篇文章我们继续来学习C++的基础知识。 目录 写在前面: 1. 缺省参数 2. 函数重载 3. C++是如何支持函数重载的 写在最后: 在学习C语言的时候,如果一个函数存在参数

    2024年02月13日
    浏览(48)
  • 【是C++,不是C艹】 省缺参数 | 函数重载 | 内联函数

    💞💞 欢迎来到 Claffic 的博客  💞💞   👉  专栏: 《是C++,不是C艹》👈 前言:   上期,我带大家给C++打了招呼,捎带着认识了命名空间和输入输出,那么这期带大家继续学习C++,让我们开始吧! 注: 你最好是学完了C语言,并学过一些初阶的数据结构。 (没有目录) ヽ

    2023年04月27日
    浏览(29)
  • 【C++】C++入门第二课(函数重载 | 引用 | 内联函数 | auto关键字 | 指针空值nullptr)

    目录 前言 函数重载 概念 重载函数的条件 C++支持重载函数的原理--名字修饰 引用 概念 特性 常引用(const引用) 使用场景 传值,传引用效率比较 引用和指针的区别 内联函数 概念 特性 auto(C++11) auto简介 auto的使用规则 指针空值nullptr(C++11) C++98中的指针空值 结语

    2024年04月15日
    浏览(49)
  • 【C++】:函数重载,引用,内联函数,auto关键字,基于范围的for循环,nullptr关键字

    在C语言中,同名函数是不能出现在同一作用域的,但是在C++中却可以,但是要满足函数重载的规则。 那什么是函数重载呢?它的规则是什么呢? 函数重载 :是函数的一种特殊情况,C++允许在 同一作用域 中声明几个功能类似的 同名函数 ,这些同名函数的 形参列表(参数个数

    2024年04月26日
    浏览(55)
  • C++ 命名空间、域、缺省参数、函数重载、引用、auto、内联函数的知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏

            从本章开始我们正式进入到C++的内容,对此如果没有学习过C语言的建议先将C语言系统的学习一遍后再来(已经更新完在专栏就能看到)。 话不多说安全带系好,发车啦 (建议电脑观看) 。 附:红色,部分为重点部分;蓝颜色为需要记忆的部分(不是死记硬背哈,

    2023年04月24日
    浏览(106)
  • 【c++速通】入门级攻略:引用详解 | auto的类型推导 | 不一样的for循环 | nullptr版本空指针

    🎥 屿小夏 : 个人主页 🔥个人专栏 : C++入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 上篇文章中,对函数重载和内联函数的作用和特性使用,进行了精细的详解。 引用和指针混不清?引用的抽丝剥茧!还有不用写类型可以自动推导的?for遍历竟然还有我们没见过的面

    2024年02月08日
    浏览(49)
  • 【C++入门到精通】C++入门 —— 引用、内联函数

    目录 一、引用 1.引用的概念 2.引用的特性 3.常引用 4.引用的使用场景         ⭕做参数         ⭕做返回值 5.传值、传引用效率比较 值和引用的作为返回值类型的性能比较 6.引用和指针的区别  引用和指针的不同点  二、内联函数 1.内联函数的概念 2.内联函数的特性

    2024年02月16日
    浏览(54)
  • 【C++入门】内联函数

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C++之路】 内联函数概念: 内联函数就是以inline修饰的函数叫做内联函数,编译时会在调用内联函数的地方展开,没有函数调用占用建立栈帧的开销。 我们知道函数的

    2024年02月01日
    浏览(41)
  • 『C++成长记』C++入门——内联函数

     🔥 博客主页: 小王又困了 📚 系列专栏: C++ 🌟 人之为学,不日近则日退  ❤️ 感谢大家点赞👍收藏⭐评论✍️ 目录 一、内联函数 📒1.1内联函数的概念 📒1.2内联函数的特征 二、auto 📒2.1auto简介 📒2.2auto使用规则 📒2.3auto无法使用的场景 三、基于范围的for循

    2024年02月05日
    浏览(42)
  • 【C++入门】内联函数的秘密

    inline 修饰的函数叫内联函数,编译后会在调用内联函数的地方展开,没有调用函数的开销,可以提高程序运行的效率。 例子: 但是 inline 只是给编译器的一个建议,编译器自己会决定内联函数是否在调用处展开。 内联函数展开是一种空间换时间的做法,可能会造成代码膨胀

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包