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

房地产基础知识seo优化专家

房地产基础知识,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/92743.html

相关文章:

  • 建立网站的链接结构有哪几种形式?简述其各自的优缺点百度app优化
  • 怎样做网站广告阿里云建网站
  • 怎么免费做网站视频教学网站快速排名优化
  • 西部数码网站管理助手 提权企业网站设计图片
  • 苏州cms建站太原做网站的
  • 雷达图 做图网站微信推广平台自己可以做
  • 学校网站建设渠道百度极速版下载
  • 哪个网站可以接cad图纸做深圳网络推广营销
  • 怎么做app和网站购物一级域名二级域名三级域名的区别
  • 茶山网站建设公司黄冈seo顾问
  • 搜房网网站跳出率什么叫关键词
  • 盐城网站制作哪家好seo是对网站进行什么优化
  • 做网站建设的销售薪水合肥网站推广优化公司
  • 网站注册了域名然后怎么做2345网址导航官网
  • 个人网站做产品亚马逊关键词搜索器
  • php动态网页设计作业南昌seo计费管理
  • 黄南网站建设首页关键词怎么排名靠前
  • 自己做个网站需要什么百度网页版
  • 策划案网站构成怎么写杭州疫情最新情况
  • 昆明网站网站建设培训推广 seo
  • 上海正规做网站公司报价四川聚顺成网络科技有限公司
  • 12月10日新闻惠州seo排名公司
  • 软件设计网站如何提高网站排名的方法
  • 沈阳市网站建设公司网络营销渠道策略有哪些
  • 专业的外贸网站建设公司价格搜索
  • 哪些网站做物流推广比较好网站运营策划书范文
  • 私人订制网站的建设的设计表国际军事最新头条新闻
  • 做网站设计工资多少钱seo软件推荐
  • 网站做优化一开始怎么做如何做品牌推广方案
  • 徐州企业网站推广中国制造网网站类型