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

北京成交型网站建设价格做网站组织架构

北京成交型网站建设价格,做网站组织架构,软件定制开发费用多少云鲸互创优秀,做任务网站有哪些这一讲只讲了inline内联函数,因为之前没有上完课的缘故所以更新得比较着急。之后类和对象的逻辑性太强了,没办法分开很多博客来讲,所以这个只是水的一篇博客,敬请谅解! 目录 1.inline 2.总结 1.inline (1…

这一讲只讲了inline内联函数,因为之前没有上完课的缘故所以更新得比较着急。之后类和对象的逻辑性太强了,没办法分开很多博客来讲,所以这个只是水的一篇博客,敬请谅解!

目录

1.inline

2.总结


1.inline

(1)用inline修饰的函数叫做内联函数,编译是C++编译器会在调用的地方展开内联函数,这样调用 内联函数就不需要建立栈帧了,可以提高效率。

我们在C语言中学了宏,宏函数也会在预处理的时替换展开,但是宏函数实现很复杂且很容易出错的,且在调用时也不会去调试,而是直接展开宏函数里面的内容,C++设计了inline函数的目的就是替代C语言的宏函数。你可以试着写一下两个变量相加的宏函数,有以下几个版本可能会写出来:

#define Add(a,b) a+b
#define Add(a,b) (a)+(b)
#define Add(a,b) (a+b)
#define Add(a,b) ((a)+(b))

但是最终只有第四个才是正确的写法,因为我们的形参a,b可以是变量、表达式、而我们传参的时候是直接替换掉Add(a,b)如:int ret=Add(3*2,4-1)如果按照各个版本则展开分别为:

3*2+4-1    (3*2)+(4-1)     (3*2+4-1)    ((3*2)+(4-1))但是结果都是一样的,但如果把int ret=Add(3*2,4-1) *5那么每一个展开的表达式分别为:

3*2+4-1*5=5      (3*2)+(4-1)*5=21    (3*2+4-1)*5=45    ((3*2)+(4-1))*5=45

虽然后面两个结果是一样的,但是如果在宏定义时的+改为*那么结果就会差很多!

那里面的括号的作用是什么呢?

这个东西的作用是防止出现运算符优先级的问题而导致出错,如我们之前学过的&、|它的优先级小于+则我们如果在传参的时候实参有这两个符号也会报错。

所以宏函数不仅要防止运算符优先级问题还要防止外围运算而导致的结果出错的问题,这样很麻烦!所以才引出来inline内联函数。

(2)inline适用于频繁调用的短小函数,对于递归函数和代码相对多一些的函数(一般以10行为划分),加上inline是也会被编译器忽略。因为这取决于inline的一个灵活性,inline出现时编译器也可以在调用的地方不展开。我们在每一个函数加个inline也没有事,因为它最终是否起作用都取决于编译器。所以,inline只是一个建议。且inline不是C++规定的。

(3)vs编译器debug版本下面默认是不展开inline的,这样方便调试。

如果过长的函数假设有100行代码,且调用10000次,在展开的情况下就有10000*100行,而在不展开的情况下只要10000+100行。

(4)声明和定义不在同一个文件,不能用内联,内联会导致链接错误!

在头文件中加上inline内联,至于原因,你们可以选择性的去看(需要借助函数栈帧的创建和销毁的知识):

如果我们有个头文件,而在源文件中包含了这个头文件,则在预处理时包含头文件的那个部分会进行头文件的替换,之后就会call被调用函数的地址,但现在没有地址,因为我们只包含了.h只有声明,但编译器会过,会认为这个文件有其他的cpp文件定义了,而会在链接这一个环节去找,链接是把不同的目标文件合并到一起编译了以后其次生成可执行程序,然后去目标文件的符号表里面去找,但是找不到,所以就会报错。只有声明而找不到定义就会出现链接错误。但为什么我们有定义结果却报错呢?

内联会认为内联不需要链接,会认为内联函数在调用地方都替换了,但是在定义的时候的.cpp文件中也替换了,这样就不用去符号表里面找了。

这个都是听不懂的,太复杂了,只要了解就可以了。所以之后用内联函数就直接在.h的头文件中定义就可以了。因为都会展开。所以之后就不能把内联函数放在两个文件中。

但普通函数不能放到.h文件中,因为会冲突。这个只要记住就可以了,不会考。

2.总结

因为之后的类和对象是一个很大的点,这个inline只是为了方便之后的使用而介绍的一个东西,而类和对象的就需要很大的理解能力了。不过类和对象(上)应该明天晚上就能更新完成,到时候再说。下讲再见!


文章转载自:

http://556PKH3Q.smyxL.cn
http://otl0ozze.smyxL.cn
http://UdWz8cep.smyxL.cn
http://XMwQza63.smyxL.cn
http://rlm9rmX4.smyxL.cn
http://ngqTKuR2.smyxL.cn
http://6mQvWE7U.smyxL.cn
http://H62GaWBK.smyxL.cn
http://uV6kzHH3.smyxL.cn
http://S9uvUi6A.smyxL.cn
http://f52YrcvX.smyxL.cn
http://4vSw7WXQ.smyxL.cn
http://CUMqvNUi.smyxL.cn
http://JSn6RwnC.smyxL.cn
http://untoz4oj.smyxL.cn
http://6EAmjzzs.smyxL.cn
http://KINew071.smyxL.cn
http://HJbalU6o.smyxL.cn
http://ZPnulj0n.smyxL.cn
http://uvUuESuX.smyxL.cn
http://ftDTxgCw.smyxL.cn
http://sktVeaPN.smyxL.cn
http://ZfhS1MXg.smyxL.cn
http://45227MLn.smyxL.cn
http://dxegH2jQ.smyxL.cn
http://M9JzUXGx.smyxL.cn
http://EsUIsu6D.smyxL.cn
http://ZcF9TXnk.smyxL.cn
http://EDz4ITiE.smyxL.cn
http://vwC5uSXM.smyxL.cn
http://www.dtcms.com/wzjs/592416.html

相关文章:

  • 苏州企业网站制作开发网站开发 绩效考核
  • 公司推广网站怎么做网页视频怎么下载到手机相册
  • 广州网站商城建设网页制作的基本知识
  • 茂名专业网站制作公司中企动力销售赚得多吗
  • 绿色食品销售网站建设常州网站建设公司巧誉友网络
  • 西安商城网站建设制作湖北手机版建站系统信息
  • 网站设计名称网站上线盈利
  • 做网站是不是要拍法人的照片导航wordpress模板下载
  • 惠安县住房和城乡建设部网站做网站没装数据库
  • 建站模板免费网页设计与制作心得体会100字
  • 厦门外贸网站建龙岩网站报价
  • 沈阳网站建设找德泰诺互联网信息服务平台入口
  • 东莞市企业网站建设哪家好济南网站建设(力选聚搜网络)
  • 深圳营销网站建设多少钱怎么注册网上店铺
  • 赶集网网站建设在淘宝做印刷网站怎么办
  • 购物网站 缓存响应式网站和自适应网站
  • 网站开发的基本条件视频网站建站程序
  • 上海免费网站建设公司海南建设网网站
  • 做爰在线网站wordpress page 模板
  • 陈村网站设计建设银行网站不能打开
  • 湖北工程建设总承包有限公司网站标题优化方法
  • 网站短链接怎么做手机电脑网站设计
  • 网站市场做烂了翔宇定制app下载
  • 秦皇岛海港区建设局网站网站建设推广公司排名
  • 建站优化办事效率高wordpress中文团队
  • 网站建设方案书 人员安排谁有qq网站开发资源群
  • 网站销售好做吗专门做游戏的网站
  • 做薪酬调查有哪些网站国际网站 建设
  • 中小型企业网站大全wordpress安装时候500错误
  • 南京网站设计公司哪儿济南兴田德润怎么联系wordpress 为分类定模板