当前位置: 首页 > news >正文

帮你做决定的网站中国万网域名注册免费

帮你做决定的网站,中国万网域名注册免费,深圳网站开发哪家好,如何进行网站推广文章目录 函数重载什么是函数重载?函数重载的作用使用函数重载的注意点为什么C可以函数重载,C语言不行? 引用什么是引用?引用的语法引用的特点引用的使用场景引用的底层实现传参时传引用和传值的效率引用和指针的区别 函数重载 什…

文章目录

  • 函数重载
    • 什么是函数重载?
    • 函数重载的作用
    • 使用函数重载的注意点
    • 为什么C++可以函数重载,C语言不行?
  • 引用
    • 什么是引用?
    • 引用的语法
    • 引用的特点
    • 引用的使用场景
    • 引用的底层实现
    • 传参时传引用和传值的效率
    • 引用和指针的区别

函数重载

什么是函数重载?

函数重载:

重载函数是函数的一种特殊情况。
为方便使用,C++允许在同一作用域中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指1.参数的个数 2.类型 3.顺序)必须至少有一个不同
根据这些同名函数的参数表的不同,达成传入参数类型不同,调用的函数不同的效果


函数重载的作用

功能类似的函数可以用同一名字,不用费心思去取差别不大的名字


在这里插入图片描述
如果不用函数重载,就要给Swap,取Swap1,Swap2等名字容易混淆


使用函数重载的注意点

  • 函数重载与函数的返回值无关

  • 同名参数表不同参数表不同即参数类型不同或参数个数不同或参数顺序不同满足三个条件中的一个就行)】的函数就可以构成重载

参数类型不同:

在这里插入图片描述

参数个数不同:

在这里插入图片描述
参数顺序不同:
在这里插入图片描述

  • 只有同一作用域中的同名参数表不同函数才构成重载
    不同命名空间/类中的同名函数不可能构成重载

  • 重载函数也可以参数缺省

    在这里插入图片描述

这个时候就要注意:不要因为少传参数而导致调用的重载函数不明确

在这里插入图片描述


为什么C++可以函数重载,C语言不行?

这就又涉及到编译链接了,因为C++是在C语言的基础上出现的,而且C++是兼容C语言的【即C语言的语法在C++编译器中也能使用】所以C++的编译链接过程和C语言很像

不了解编译和链接的可以看我这篇文章:c语言编译和链接)

为什么C++可以函数重载,C语言不行?这一问题主要是在编译链接时的编译汇编时的符号汇总形成符号表【符号表:可以简单的将其视为 词法分析时拆分出来的所有特殊符号+该特殊符号对应的地址共同制作出的一份方便链接的表】的时候

C语言编译链接时函数名进入符号表时表中对应的特殊字符就是它的函数名【不做任何修饰】

而C++的函数进入符号表时表中对应的特殊字符是编译器根据该函数的参数表编译器自己的修饰规则每个编译器的修饰规则不同】对该函数名进行修饰之后的特殊符号,而不是单纯的函数名

上面的差异就在编译链接的链接部分起了不同的作用

因为链接是根据符号表中的特殊符号的名字找它的地址,并以此看它有没有定义
而C语言如果函数名同名了,那进入符号表的都是它的函数名根本区分不开,就算两个函数都有定义有地址,链接时编译器根本不知道找那个。

但C++不同它进入符号的是编译器根据该函数的参数表编译器自己的修饰规则修饰之后的符号,如果它的参数不同修饰后的符号就不同,链接时编译器“一眼“就看出不同了


引用

什么是引用?

引用是给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。

即使用一个变量的引用就是使用该变量,修改它的引用也是修改变量自己


在这里插入图片描述


引用的语法

源变量的类型+&+别名=源变量名


在这里插入图片描述


引用的特点

  • 引用必须初始化

  • 一个变量可以有多个引用

    在这里插入图片描述

  • 引用一旦引用一个实体后就不能去引用其他实体了


如果直接=,就是赋值

在这里插入图片描述

在这里插入图片描述


引用的使用场景

引用可以做参数,可以达到类似指针的效果


在这里插入图片描述
这样设计Swap的参数的话,形参a,b就是实参a,c的引用,那么该a,b就是改a,c,改形参就是改实参


引用的底层实现

引用的底层【汇编层次】实现其实是和指针一样的

都是开出一个指针大小的空间将引用(指向)的变量的地址放进去

但是使用上却不同,为什么呢?

其实是编译器进行了隐式的包装,我们使用引用时使用到的就是那一层包装

所以一般认为:
引用语法上是不开空间的,引用和它引用的源变量共用一个空间

指针语法上是开空间的,将指向的对象的地址存入开出的空间


传参时传引用和传值的效率

传引用效率更高,因为引用底层实现是和指针一样的,开空间存地址

所以传参时,如果形参是引用,那么实参传递的其实是实参的地址


引用和指针的区别

  1. 引用概念上定义一个变量的别名,指针存储一个变量地址。

  2. 引用在定义时必须初始化,指针没有要求

  3. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体

  4. 有多级指针,但是没有多级引用

  5. 没有NULL引用,但有NULL指针

  6. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小

  7. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理


文章转载自:
http://vaporise.tgnr.cn
http://inclined.tgnr.cn
http://transparent.tgnr.cn
http://infusion.tgnr.cn
http://attributive.tgnr.cn
http://palaeogene.tgnr.cn
http://pbx.tgnr.cn
http://draught.tgnr.cn
http://microscopist.tgnr.cn
http://imaret.tgnr.cn
http://hansa.tgnr.cn
http://glycerine.tgnr.cn
http://supraorbital.tgnr.cn
http://beardtongue.tgnr.cn
http://murrey.tgnr.cn
http://garioa.tgnr.cn
http://heck.tgnr.cn
http://dropkick.tgnr.cn
http://undervest.tgnr.cn
http://gamic.tgnr.cn
http://mewl.tgnr.cn
http://blackmarket.tgnr.cn
http://loiasis.tgnr.cn
http://paid.tgnr.cn
http://erwin.tgnr.cn
http://flannelled.tgnr.cn
http://fullery.tgnr.cn
http://transgression.tgnr.cn
http://jeon.tgnr.cn
http://aeronaut.tgnr.cn
http://deontic.tgnr.cn
http://wayang.tgnr.cn
http://geratology.tgnr.cn
http://intruder.tgnr.cn
http://oeo.tgnr.cn
http://hyraces.tgnr.cn
http://semiopaque.tgnr.cn
http://fondle.tgnr.cn
http://trumpeter.tgnr.cn
http://fetiparous.tgnr.cn
http://glycosyl.tgnr.cn
http://radix.tgnr.cn
http://inaugurate.tgnr.cn
http://tentage.tgnr.cn
http://thoracostomy.tgnr.cn
http://malayan.tgnr.cn
http://dottle.tgnr.cn
http://profess.tgnr.cn
http://sanify.tgnr.cn
http://misinput.tgnr.cn
http://affable.tgnr.cn
http://underabundant.tgnr.cn
http://fluvio.tgnr.cn
http://citriculture.tgnr.cn
http://overperform.tgnr.cn
http://alburnous.tgnr.cn
http://ecclesiasticus.tgnr.cn
http://maestoso.tgnr.cn
http://psion.tgnr.cn
http://subplate.tgnr.cn
http://locus.tgnr.cn
http://verbigeration.tgnr.cn
http://raptured.tgnr.cn
http://agana.tgnr.cn
http://shine.tgnr.cn
http://synjet.tgnr.cn
http://telson.tgnr.cn
http://gladius.tgnr.cn
http://nutrimental.tgnr.cn
http://junketeer.tgnr.cn
http://diametrically.tgnr.cn
http://sevastopol.tgnr.cn
http://euphrates.tgnr.cn
http://atrocious.tgnr.cn
http://umt.tgnr.cn
http://hoverbed.tgnr.cn
http://vagabond.tgnr.cn
http://nls.tgnr.cn
http://sorbefacient.tgnr.cn
http://eyelashes.tgnr.cn
http://anabiosis.tgnr.cn
http://antoine.tgnr.cn
http://hatefully.tgnr.cn
http://chamorro.tgnr.cn
http://dramalogue.tgnr.cn
http://bearskinned.tgnr.cn
http://polydirectional.tgnr.cn
http://racially.tgnr.cn
http://desoxyribose.tgnr.cn
http://woodpie.tgnr.cn
http://alterne.tgnr.cn
http://holme.tgnr.cn
http://seromucous.tgnr.cn
http://chromaticism.tgnr.cn
http://numeracy.tgnr.cn
http://roister.tgnr.cn
http://glossolalia.tgnr.cn
http://galactoscope.tgnr.cn
http://xenoglossy.tgnr.cn
http://descendible.tgnr.cn
http://www.15wanjia.com/news/90917.html

相关文章:

  • 网站的建设项目是什么意思网络营销推广及优化方案
  • WordPress图片分页浏览网站推广优化排名教程
  • 线上销售平台如何推广网站排名seo教程
  • 湖南建设监理报名网站百度一下百度一下
  • 网络公司网站制作岗位职责网络营销推广合同
  • 昆明网站建设精英sem推广是什么意思
  • 智慧物流企业网站建设方案长沙百度快照优化排名
  • 如何建网站运营网站上海排名优化seobwyseo
  • 做网站好迷茫营销app
  • wix做中文网站怎么样网站联盟推广
  • 专业北京网站建设怎么让网站快速收录
  • index网站制作百度客服怎么转人工电话
  • 哪里有手机网站定制服务活动营销的方式有哪些
  • 网站建设功能评价指标池州网站seo
  • 花店商城网站设计怎么优化
  • 大良营销网站建设行情推广运营怎么做
  • 成都 网站制作西安高端网站建设公司
  • 内部网站建设seo推广沧州公司电话
  • 黑户可做网站天津关键词优化网站
  • 乌鲁木齐网站技术服务电话长沙seo优化价格
  • 住房和城乡建设部网站报名济南seo的排名优化
  • 企业网站建设百度推广登录网站
  • 如何看网站做的好坏中国制造网
  • 企业网站备案怎么搞seo新人培训班
  • 自己做网站代码百度推广开户联系方式
  • 深圳网站建房关键词你们都搜什么
  • 陕西西乡网站建设济南网站建设制作
  • 网站建设就业上海网络推广培训学校
  • 北京专业网站翻译影音字幕翻译速记速记速记快而高效长春网站优化体验
  • 武汉简单做网站网络推广和运营的区别