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

旅游网站建设成都/杭州网站seo公司

旅游网站建设成都,杭州网站seo公司,政府门户网站安全建设,php动态网站开发概述首先声明,在C代码中,应该为了使用方便而优化,千万不要变成--为了复杂化代码而优化的虚伪的 C 哲学。C 中绝大部分直接的赋值操作都是传拷贝,因为传拷贝很安全。其实在绝大多数情况下,传拷贝 没有一点问题。对于C代码而…

首先声明,在C++代码中,应该为了使用方便而优化,千万不要变成--为了复杂化代码而优化的虚伪的 C++ 哲学。

C++ 中绝大部分直接的赋值操作都是传拷贝,因为传拷贝很安全。

其实在绝大多数情况下,传拷贝 没有一点问题。

对于C++代码而言,我始终认为 安全性 才是最重要的,比如const, constexpr关键字,这些东西必须要学,必不可少,这是为了代码规范。

但是对于右值引用,我不认为它是一个必须要学的东西,而且很多时候,我觉得右值引用会让人感到困惑,并且把代码复杂化了。

代码1:

const string lover{ "girls" };
const string& chaser{ lover };

对于一般的代码而言,这样使用string没有任何问题,这只是一个普通的左值引用。

接下来,我将化身刘谦,给诸位带来一场魔术表演,我这个表演打算让一个string变量--凭空消失。

我并不打算直接修改这个变量,而是我只需要通过std::move

22714d2e674b5b895c9f524c2e3dc70b.png

别人问你,C++的艺术在哪里?C++的性能在哪里?你只需要向他展示这两行代码。

lover哪去了?凭空消失了?

不知道你懂了没有,C++在资源归属权的处理有着变态级别的控制。

拷贝就是拷贝,赋值也是拷贝,移动是移动,移动是资源易主。

再看一张图。

42f20d2663da2ec8298e9a056d0dd6eb.png

这串代码证明,在执行move操作后,string lover被清空了。

这个变量在内存中还存在,还可以使用,只是它的值为空。

By the way.

在使用std::move 之前 需要包含头文件 #include <utility>

代码3:

const string& hello(const string& str) {return str;
}int main() {const string zyy = hello("great");return 0;
}

但是对于这样的代码,仍然存在优化空间,你能发现吗?

形参拷贝到返回值,返回值再拷贝到zyy。

好家伙,两次拷贝

移动的优势在于,移动不开辟额外的内存。

如下。

string&& hello(string&& str) {return move(str);
}int main() {const string zyy{ hello("great") };return 0;
}

你也可以这样理解。

本来对于每个函数而言,执行函数时,一旦超过了它的作用域,局部变量就自动销毁了,但是我们通过一定的手段(右值引用)延长了“返回值的生命周期”,使得它没有被销毁,而是继续沿用下去。


const int& sum1(const int& a, const int& b) {return a + b;
}int&& sum2(int&& a, int&& b) {return move(move(a) + move(b));
}int main() {constexpr int a{ 1 };constexpr int b{ 2 };const int jkj = sum1(a, b);const int heh = sum2(3, 4);cout << "jkj: " << jkj << endl;cout << "heh: " << heh << endl;return 0;
}

对于以上代码,sum2的效率更高,因为它做了3次move操作,取代了copy操作。

实际上,我们可以只写一个sum函数重载它们。

但这仍然太复杂,对于每个函数我们至少要两个模板。

一个是const T& ,还有一个是T&&

std::forward可以让这两者统一,本质上仍然是函数重载.

forward以后有机会再讲。

http://www.jmfq.cn/news/4970071.html

相关文章:

  • 云主机服务器/深圳企业seo
  • wordpress 国内加速/哈尔滨网络优化推广公司
  • 嘉兴微信网站建设/专业网页设计和网站制作公司
  • 大连的网站设计公司/北京做的好的seo公司
  • 申请网站建设的请示/教你如何快速建站
  • 桂林北京网站建设/推广代理公司
  • 现在建网站/品牌营销案例
  • 护肤品 网站建设策划书/seo蜘蛛池
  • 怎么自己做彩票网站/seo代码优化工具
  • 长春seo网站建设费用/技能培训
  • 小说网站开发的看书软件/seo值是什么意思
  • 网站流量如何盈利/天津百度推广电话号码
  • 承德市网站开发/磁力宝最佳搜索引擎入口
  • django网站开发实例源码/做app推广去哪找商家
  • 医社保增减员在什么网站做/现在网络推广方式
  • 要建一个网站该怎么做/知乎推广合作
  • 龙华专业做网站/百度竞价代理公司
  • 做水果的有什么网站/石家庄百度seo排名
  • 人才网站源码/外贸获客软件
  • 自动化科技产品网站建设/域名ip地址在线查询
  • 鞍山网站怎么做出来的/上海百度推广公司排名
  • 自建站什么意思/网络营销常见的工具
  • seo网站营销/西安网站定制开发
  • 建设公司网站靠谱吗/企业宣传推广
  • 网站备案提交资料/全网优化推广
  • 做海鲜团购网站/独立站怎么搭建
  • 合肥网站搜索优化/百度q3财报2022
  • 什么网站程序可以做抽奖页面/谷歌seo优化推广
  • 广西建设工程质检安全网站/如何做网页制作
  • 早期做的网站支持现在的网速吗/营销策划是做什么