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

网站浏览历史怎么查看在线检测网站安全

网站浏览历史怎么查看,在线检测网站安全,大一网站开发体会,做网站应该注意哪些方面返回值优化#xff08;Return value optimization#xff0c;缩写为RVO#xff09;是C的一项编译优化技术。它最大的好处是在于#xff1a; 可以省略函数返回过程中复制构造函数的多余调用#xff0c;解决 “C 中长久以来为人们所诟病的临时对象的效率问题”。 我们先谈正…返回值优化Return value optimization缩写为RVO是C的一项编译优化技术。它最大的好处是在于 可以省略函数返回过程中复制构造函数的多余调用解决 “C 中长久以来为人们所诟病的临时对象的效率问题”。 我们先谈正常情况下函数调用的过程。 class RVO { public:RVO(){printf(I am in constructor\n);}RVO (const RVO c_RVO) {printf (I am in copy constructor\n);}~RVO(){printf (I am in destructor\n);}int mem_var; }; RVO MyMethod (int i) {RVO rvo;rvo.mem_var i;return (rvo); } int main() {RVO rvo;rvoMyMethod(5); }其中非常关键的地方在于对MyMethod函数的编译处理。 RVO MyMethod (int i) {RVO rvo;rvo.mem_var i;return (rvo); }如果没有返回值优化这项技术那么实际上的代码应该是编译器处理后的代码应该是这样的 1、首先编译器会偷偷地引入一个参数RVO _hiddernArg该参数用来引用函数要返回的临时对象换句话说该临时对象在进入函数栈之前就已经建立该对象已经拥有的所属的内存地址和对应的类型但对应内存上的二进制电位状态尚未改变即尚未初始化。 以上涉及到一点变量的概念。变量本质上是一个映射单位每个映射单位里都有三个元素变量名、类型、内存地址。变量名是一个标识符。当要对某块内存写入数据时程序员使用相应的变量名进行内存的标识而地址这个元素就记录了这个内存的地址位置。而相应类型则告诉编译器应该如何解释此地址所指向的内存因为本质上内存上有的仅仅只是两种不同电位的组合而已。因而变量所对应的地址所标识的内存的内容叫做此变量的值。 2、RVO rvo; 这里我们创建一个变量——RVO类的对象rvo计算机将圈定一块内存地址为该变量使用并声明类型告诉编译器以后要怎么解释这块内存。 3、rvo.RVO::RVO(); 但是以上操作尚未改变该内存上的 二进制的电位状态改变电位状态的工作由rvo对象的构造函数完成。 4、_hiddenArg.RVO::RVO(rvo); 用rvo对象来调用 临时对象 的拷贝构造函数 来对临时对象进行构造。 5、rvo.RVO::~RVO(); 函数返回结束; 析构函数内部定义的所有对象。 总结一下一般的函数调用过程中的变量生成传递 1、在函数的栈中创建一个名为rvo的对象 2、关键字 return 后的rvo 表示的用变量rvo来构造需要返回的临时对象 3、函数返回结束析构掉在函数内建立的所有对象 4、继续表达式rvoMyMethod(5);里的操作 5、语句结束析构临时对象 这里在函数栈里创建的对象rvo在函数MyMethod返回时就被析构其唯一的操作仅仅是调用函数的返回对象、即所谓的临时对象的复制构造函数然后就被析构了。特别的如果对象rvo是一个带有大量数据的变量那么这一次变量的创建与销毁的开销就不容小觑。 但是如果开启了返回值优化那么当编译器识别出了 return后的返回对象rvo和函数的返回对象的类型一致就会对代码进行优化 。编译器转而会将二者的直接关联在一起意思就是对rvo的操作就相当于直接对 临时对象的操作因而编译器处理后的代码应该是这样的 RVO MyMethod(RVO _hiddenArg, int i) {_hiddenArg.RVO::RVO();_hiddenArg.member i;Return }可以发现优化后的函数依然可以处理相同的工作但是省略掉了一次复制构造。 因而在编译时启用以及不启用 RVO 将产生一下两种不同的行为 1、若不启用 RVO预期输出将是 I am in constructor I am in constructor I am in copy constructor I am in destructor I am in destructor I am in destructor 2、若启用 RVO预期输出将是 I am in constructor I am in constructor I am in destructor I am in destructor 进一步的我们也可以预见 使用如下的Method函数也将会有相同的输出结果 RVO MyMethod_01 (int i) {return RVO(i); } RVO MyMethod_02 (int i) {return MyMythod_01(int i); }这里再稍稍拓展另一个很重要的优化技术称为复制省略或者译作“省略不必要的复制”copy elision。继续以上述代码为例当用RVO类型的临时对象去初始化同类型的对象时复制初始化通常优化为直接初始化但在语义上仍然需要复制构造函数是可访问的。 比如RVO rvoMyMethod();返回的将是 I am in constructor I am in destructor
http://www.pierceye.com/news/917809/

相关文章:

  • 设计得很好的企业网站wordpress 标签云
  • 杂志网站模板苏州设计网页网站好
  • 设计理论网站清远市发布
  • 长沙本土网站制作公司wordpress thegem
  • 网站后台 源码重庆电力公司网站
  • 泰安企业网站建设电话廉江手机网站建设公司
  • 自已建网站微信登录珠海绿网科技有限公司
  • 大良网站制作太原建筑公司网站
  • 网站开发的交付文档抖音代运营费用明细
  • 自适应网站建设沈阳网站安全建设需求
  • 列表主题wordpress国外seo综合查询
  • 装修网站怎么做推广做百度网站每年的费用多少
  • 网站搭建免费视频教程省企联网站建设要求
  • 天津大学生专业做网站建设网站价格
  • 携程网站建设进度及实施过程文具电子商务网站开发内容
  • 怎么查看网站打开速度网站源码整站下载
  • 北京城乡住房建设部网站常见的网络营销推广方式有哪些
  • 做网站的成本费用钱宝网站怎么做任务
  • 网站上的格式用html怎么做部队网站设计
  • 帮客户做网站内容社交网站有哪些如何做
  • 网站开发与设计实训总结两千字公众号制作的网站开发
  • 一个公司做2个产品网站怎么做的用html5做的网站素材
  • 内乡网站建设咸阳网站建设报价
  • 企业网站多少钱扶余手机网站开发
  • 做外汇网站卖判刑多少年如何找回网站后台密码
  • 怎么做优惠券网站asp.net mvc 5网站开发之美
  • 网站底部浮动电话广告福建住房和城乡建设部网站
  • 建站之星破解版wordpress 置顶排序
  • c2c网站代表和网址涟源市建设局网站
  • 哪个网站有免费的模板免费网上商城系统