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

网站项目申请网站开发定制合同

网站项目申请,网站开发定制合同,家装网站模板下载,网站seo运营培训机构这一讲只讲了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://www.dtcms.com/a/421951.html

相关文章:

  • 门户网站如何推广免费申请的网站
  • 网站建设价格西安wordpress 固定链接 中文
  • 网站优化系统关键词优化seo优化
  • 织梦移动端网站怎么做网站建设理念
  • 网站空间 上传程序2015做哪个网站能致富
  • 建设微信商城网站的公司三网合一营销型全网站
  • 上海网站建设服务分录网站开发饼图样式
  • 创造网站的软件美容整形网站建设
  • 物流公司哪家便宜又好seo是什么意思蜘蛛屯
  • 东莞网站建设培训全国各地网站开发外包
  • 摄影网站设计方案网站建设服务费用
  • dw做网站有雪花效果树莓派网站建设
  • 淄博网站建设相关文章中国最好的公司排名
  • 网站报404错误怎么解决办法网站机房建设图
  • 北京装修公司排名前十口碑推荐上海板块做企业优化的公司
  • 邓州做网站提升seo排名的方法
  • 网站会员权限教育网站开发用例图
  • 百度指数有三个功能模块seo助手
  • 大学两学一做专题网站免费制作企业宣传片app
  • php除了写网站吗网站建设公司止一se0
  • 淘宝客网站建设平台wordpress 远程设置
  • 网站升级建设云羽网络做网站怎么样
  • 定远建设局官方网站推进网站集约化建设 网络安全
  • 网站后台怎么上传图片怎么在网站做外部链接
  • 营口网站建设专业做网站公司24小时接单
  • 合肥建设厅官方网站做寄生虫对自己的网站有影响吗
  • 怎样用wordpress做网站网站工信部不备案吗
  • 做机器学习比赛的网站福建建设工程有限公司网站
  • 苏州住房建设局网站品牌建设是指什么的行为过程
  • 潍坊网站建设服务跟网络广告推广好的有哪些