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

东莞高端网站设计h5与wordpress

东莞高端网站设计,h5与wordpress,网络seo专员招聘,网站的风格与布局的设计以前也看过一些 std::move 的介绍文章,总结下来一句话:std::move 没有任何代价。这个总结实在是坑人。 今天突然悟了,实际应用中悟的。如果写一个相关的教程,完全不应该从 std::move 入手,而是应该从如何降低对象拷贝…

以前也看过一些 std::move 的介绍文章,总结下来一句话:std::move 没有任何代价。这个总结实在是坑人。

今天突然悟了,实际应用中悟的。如果写一个相关的教程,完全不应该从 std::move 入手,而是应该从如何降低对象拷贝代价入手。

struct A {int m_a;int m_b;
};

如果要对 A 做拷贝,可以写成下面这样。对于这种情况,就算用了 std::move,也没有什么用。

A a1;
g_a2 = a1; // g_a2 是一个类成员

但是,对于下面这个结构,就不一样了:

struct A {int m_a;int m_b;char *m_s;
};

此时,下面的逻辑取决于 A 的拷贝构造函数实现,一般来说,会把 m_a, m_b, 直接赋值,m_s 则会做一个深拷贝。

A a1;
g_a2 = a1; // g_a2 是一个类成员

有些时候,我们不希望做深拷贝。浅拷贝行不行?一般来说是不行的。因为浅拷贝后 g_a2.m_sa1.m_s 会指向同一片内存区域,并且 a1 是栈变量,它析构后会释放 m_s 指向的内存,那么 g_a2 就会得到一个野指针。

怎么办呢?C++ 发明了一种“移动”语义,让 A 实现下面这样一个移动拷贝函数:

struct A {// 默认构造A() : m_a(0), m_b(0.0), m_s(nullptr) {}// 带参数构造A(int a, int b, const std::string& s) : m_a(a), m_b(b), m_s(new std::string(s)) {}~A() { delete m_s; } // 释放内存// 移动构造A(A&& other) {m_a = other.m_a;m_b = other.m_b;m_s = other.m_s;other.m_s = nullptr; // 关键之处,强行删掉 other.m_s 的指针,实现了内存的“移动”}// 移动赋值A& operator=(A&& other) {if (this != &other) { // 防止自赋值m_a = other.m_a;m_b = other.m_b;m_s = other.m_s;other.m_s = nullptr; // 关键之处,强行删掉 other.m_s 的指针,实现了内存的“移动”}return *this;}};

A 还可以这样定义这个函数:

struct A {void set(A&& other) {m_a = other.m_a;m_b = other.m_b;m_s = other.m_s;other.m_s = nullptr;}
};A a1;
g_a2.set(std::move(a1)); // g_a2 是一个类成员

所以,std::move 的确什么事情都不做,它只是提示编译器,去调用支持 move 语义的函数而已,具体做事情的,是这些函数。

Note:STL 中,vector 的 emplace_back、push_back 等也实现了支持 move 语义等版本。

http://www.dtcms.com/wzjs/545945.html

相关文章:

  • 网站后台栏目微信开发者工具怎么使用
  • 莱芜吧贴吧高明公司搜索seo
  • 备案号怎么放置到网站太原招聘网站开发
  • jsp做网站图片怎么存储前端工作一年工资多少正常
  • 家用电脑可以做网站服务器推广平台有哪些平台
  • 网站助手 伪静态物流百度推广怎么做网站
  • 兰州做网站开发wordpress归档页面
  • 做土特产的网站国家反诈中心app下载注册
  • 网站提交搜索引擎后出现问题免费网络游戏大全
  • 重庆哪里可以做网站的浏览不良网站会被网警抓吗
  • 烟台市住房和城乡建设局网站中核二三建设有限公司
  • 桓台县建设局网站下载应用的app
  • 安防网站建设优点贵州省建设厅官方网站
  • 北京网站备案域名贵阳门户网站建设
  • 在菲律宾做网络网站犯法吗网站建设最便宜多少钱
  • 嘉兴网站制作哪里好服务器上建设网站
  • 这个网站做海外推广网页设计与制作项目
  • 做下载网站用阿里云的什么产品广州广州网站建设公司
  • 苏州做网站的公司排名互联网推广解决方案
  • 百度权重查询爱站网wordpress 代码执行
  • 北京网站开发网站建设咨询网站科技动效
  • wordpress怎么下载seo公司培训课程
  • 怎么做企业网站二维码扫描ps如何做网页
  • wordpress调用会员等级桂林seo顾问
  • 上海好的网站制作公司网络平台怎么建立网站吗
  • php网站开发实战建设学校网站的原因
  • 做网站的公司上海盐城网站建设价格
  • 301 网站 怎么做平台建设网站公司
  • 高端模版网站南昌公司建设网站费用
  • 网站开发前的准备工作盐城网站建设jsxmt