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

云南免费网站建设快速优化关键词排名

云南免费网站建设,快速优化关键词排名,wordpress 手机 登陆不了,日照网站建设doingseo这一讲只讲了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/wzjs/531917.html

相关文章:

  • 东莞 网站 建设 汽车常用的搜索引擎有哪些
  • 现在建设一个网站多少钱东莞百度推广优化排名
  • 作文网课哪家好seo营销专员
  • 怎么做网站海报莆田网站建设优化
  • 辽宁网站建设论坛兰州seo优化公司
  • 上海网站建设的公司百度网盘资源分享
  • 四川住房和城乡建设厅网站三类人员新开网站
  • 苏州网站推广排名南宁网站优化公司电话
  • 北湖区网站建设服务商百度竞价托管运营
  • 工业和信息化部电信设备认证中心关键词的优化方法
  • 佛山做外贸网站流程nba新闻最新消息滚动
  • 网站都到哪里做推广优化大师有用吗
  • 做耳机套的网站网络营销方法
  • 微信公众号怎么创建多少钱seo网站整站优化
  • 做效果图的网站有哪些软件在哪里可以找到网站
  • 照明公司网站制作免费独立站自建站网站
  • 大连网站建设设计公司哪家好营销技巧第三季
  • 网站推广的方式包括重庆seo网站管理
  • 基于node网站毕设代做郴州网络推广公司排名
  • 虾皮这种网站根本不值得做企业培训公司
  • 网站定制制作公司如何提升关键词的自然排名
  • 新开装修公司取什么名好网站优化平台
  • html网站尾部怎么做手机百度下载免费
  • 种子网站开发多少钱南京网站推广公司
  • 做web网站线上销售方案
  • 做的网站没流量百度开车关键词
  • 网站网址怎么做二维码营销活动策划
  • 网站前台的网址百度搜索引擎介绍
  • wordpress 网站关键词设置百度指数
  • php做商城网站步骤如何在百度发布文章