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

太原app开发公司郴州seo快速排名

太原app开发公司,郴州seo快速排名,wordpress手机端模板下载,模版 网站需要多少钱函数回顾与后置返回类型 函数定义中如果有形参则形参应该有名字,而不光是只有类型,但是如果并不想使用这个形参,换句话说这个形参并不在这个函数中使用,则不给形参名也可以,但在调用这个函数的时候,该位置…

函数回顾与后置返回类型

函数定义中如果有形参则形参应该有名字,而不光是只有类型,但是如果并不想使用这个形参,换句话说这个形参并不在这个函数中使用,则不给形参名也可以,但在调用这个函数的时候,该位置的实参是必须要明确给出的。
看看如下范例,函数定义中的第二个形参只给出了类型,并没有给出名字:
在这里插入图片描述
但是,在进行函数声明的时候,是可以没有形参名的。虽然写形参名会帮助自己和其他读代码的人更好地理解代码,但是编译器会忽略形参名。看如下函数声明的代码:
在这里插入图片描述
上面这种写法叫作“前置返回类型”,也就是说函数的返回类型位于函数声明或者函数定义语句的开头。
在C++11中还引入了一种新的语法,叫后置返回类型,也就是在函数声明或定义中把返回类型写在参数列表之后,对于有一些返回类型比较复杂的情形,这种写法可能更容易让人看懂,同时,有一些比较特殊的场合,还必须采用这种语法来书写,后面会讲解到。请读者先知道有这样的写法即可,当前不需要深究其他。看看如下范例:

auto func(int,int) -> int;	//函数声明中的后置返回类型写法
auto func(int a,int b) -> int		//函数定义中的后置返回类型写法
{return 1;
}

总结一下“后置返回类型”的写法:前面放置auto关键字,表示函数返回类型放到参数列表之后,而放在参数列表之后的返回类型是通过“->”开始的。此外,补充一点函数书写时的说明:一个函数内包含的代码不要太长,不同的功能尽量分解到多个函数中去写,一般一个函数内(函数体)建议包含几十到上百行代码,尽量不要书写上千行代码,函数体太过冗长也增加了他人阅读这段代码的理解难度和时间。

inline内联函数

先看一个范例:

inline int myfunc(int testv)	//函数定义,这里必须加inline
{return testv * (5 + 4) * testv;
}

注意上面这段代码,在该函数定义之前增加了一个inline关键字,增加了这个关键字的函数,叫作内联函数。那么,inline有什么作用呢?

每个人都知道,调用函数是要消耗系统资源的,尤其是一些函数体很小但却频繁调用的函数,调用起来很不划算,因为要频繁地进行压栈、出栈动作以处理函数调用和返回的问题,这也意味着要频繁地为它们开辟内存。为了解决这种函数体很小、调用又很频繁的函数所耗费的系统性能问题,引入了inline关键字。该关键字的效果如下:

(1)影响编译器,在编译阶段完成对inline函数的处理,系统尝试将调用该函数的动作替换为函数的本体(不再进行函数调用)。通过这种方式,来提升程序执行性能。
(2)inline关键字只是程序员(开发者)对编译器的一个建议,编译器可以尝试去做,也可以不去做,这取决于编译器的诊断功能,也就是说决定权在编译器,无法人为去控制。
(3)传统书写函数时一般将函数声明放在一个头文件中,将函数定义放在一个.cpp源文件中,如果要把函数定义放在头文件中,那么超过1个.cpp源文件要包含这个头文件,系统会报错,但是内联函数恰恰相反,内联函数的定义就放在头文件中,这样需要用到这个内联函数的.cpp源文件都能通过#include来包含这个内联函数的源代码,以便找到这个函数的本体(源代码)并尝试将对该函数的调用替换为函数体内的语句。

那么,使用内联函数的优缺点是什么呢?
用函数本体取代函数调用,显然可以增加效率。但同时带来的问题是函数代码膨胀了。所以内联函数函数体要尽可能短小,这样引入inline才有意义。请读者想一想,调用一个函数时需要压栈开辟内存等动作,假如这些动作需要花费1s的时间,如果在这个函数中代码的执行需要花费1000s的时间,那这个函数写成内联函数之后,也就节省了1s的时间,但是源文件代码却膨胀的很大。如果在多个地方调用这个函数,那就相当于多个地方出现代码的重复膨胀,代码在程序运行时也是要占用内存的,因为内存中有代码段专门保存程序代码。

请注意:
(1)编译器不同,可能内联的结果也不同,有些编译器很聪明,优化好了只剩下一个结果,有些编译器差了一点,优化成一些表达式,再差一点的编译器就真变成直接把函数体中的语句拿来替换到函数调用处了。
(2)inline函数尽量简单,代码尽量少,尤其是各种复杂的循环、分支、递归调用等,尽量少出现在内联函数中,否则,编译器可能会因为这些代码的原因拒绝让这个函数成为内联函数。
(3)前面讲解constexpr函数时,回忆一下给函数加constexpr的目的,就是因为要将该函数用在常量表达式中。当时曾经说过,这种constexpr函数,函数体必须要写的特别简单,如果写了某些多余的语句,那么编译就会出错,所以,可以把constexpr函数看成是更严格的一种内联函数,因为constexpr自带inline属性。
(4)内联函数有点像宏展开(#define),宏展开和内联函数有各种差别,如类型检查等。

http://www.zhongyajixie.com/news/59384.html

相关文章:

  • 辽宁省建设银行招聘网站百度极速版客服电话
  • 杭州网站制作机构长春网站优化咨询
  • 网站收录后怎么做排名seo短视频网页入口引流
  • 什么网站可以赚钱啊如何提高网站seo排名
  • 一个动态网站的制作流程百度网站优化软件
  • 网站快照长期不更新关键词排名推广公司
  • js做示爱网站例子韶关seo
  • 权威数据统计网站百度网盘网页版官网
  • 暴雪国服seo外链发布软件
  • 电子商务网站建设的目的意义福州网站建设策划
  • 动态网站设计论文1500字独立站seo是什么意思
  • 做猎头要用的网站知乎个人博客模板
  • 游戏网站开发视频seo排名优化有哪些
  • 新津网站建设西安seo整站优化
  • 网站建设的售后服务怎么写网站发布与推广方案
  • 品牌网站制作报价百度seo排名培训 优化
  • 义乌公司网站制作东莞seo优化案例
  • 程序做网站好还是app好sem论坛
  • 做我的世界壁纸网站互动营销用在哪些推广上面
  • 网站开发需有没有著作权原创文章代写
  • 做网站文案策划步骤济南做网站公司
  • 上海做电缆桥架的公司网站河南网站网络营销推广
  • 浙江标力建设集团网站输入搜索内容
  • 建站主机苏州网站排名推广
  • 替代wordpress的软件网站seo快速优化技巧
  • 网站开发后端是什么seo定义
  • 做软件赚钱的网站有哪些关于网络推广的方法
  • 重庆有没有做网站的seo黑帽多久入门
  • 长沙短视频制作公司天津seo排名扣费
  • 长沙岳麓区网站开发网络营销知名企业