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

做爰网站下载地址网店运营公司

做爰网站下载地址,网店运营公司,平面设计与网站开发的概述,一个简单的app多少钱在某些情况下,对象拷贝后就立即被销毁了,这时利用新标准(C11)提供的对象移动而非拷贝将大幅提升性能. 1.右值引用 为了支持移动操作,c11新增了一种引用 - 右值引用(rvalue reference)。这种引用必须指向右值,使用&&声明。 右值引用只能引用临时变量或常量值. 右值引用…

在某些情况下,对象拷贝后就立即被销毁了,这时利用新标准(C++11)提供的对象移动而非拷贝将大幅提升性能.

1.右值引用

为了支持移动操作,c++11新增了一种引用 - 右值引用(rvalue reference)。这种引用必须指向右值,使用&&声明。

右值引用只能引用临时变量或常量值.

右值引用主要是为类的移动语句做准备的。


int main()
{//int& a = 100; //错误int&& ra = 100;//右值引用,引用一个常量int b = 15;//int& b1 = b * 2 + 10;//错误,不能引用临时变量int&& rb = b * 2 + 10;//合法//double &c = sqrt(100);//错误,不能引用临时变量double&& rc = sqrt(100);//合法cout << ra << "," << rb << "," << rc << endl;return 0;
}

2.移动构造函数和移动赋值函数

在C++中,移动构造函数和移动赋值函数是与对象的资源管理相关的两种操作,它们通常用于优化性能,特别是在处理像动态分配数组或复杂数据结构等资源密集型对象时。这两种操作依赖于C++11引入的右值引用和移动语义。

1)移动构造函数

移动构造函数是一个特殊的构造函数,它接受一个右值引用作为参数。当对象被临时创建并立即用作初始化另一个对象时,会调用移动构造函数。与普通构造函数不同,移动构造函数不会创建新对象的副本(不另外创建需要的资源),它会直接使用原始对象的资源(如动态分配的内存),并将其转移到新的对象。

请注意,原始对象在移动构造后通常不再可用。

示例:


class MyClass {  
public:  MyClass(MyClass&& other) noexcept : data(other.data) {  other.data = nullptr; // 将原始对象的资源置为nullptr,确保它不再拥有这些资源  }  private:  int* data; // 假设MyClass管理动态分配的内存  
};
2)移动赋值函数

移动赋值函数是一个特殊的赋值函数,它接受一个右值引用作为参数。实参是一个临时对象时,会调用移动赋值。与拷贝赋值不同,移动赋值不会创建新对象的副本(不另外创建需要的资源),而是直接使用源对象的资源,并将其转移到目标对象。

请注意,源对象在移动赋值后通常不再可用。

示例:

class MyClass {  
public:  MyClass& operator=(MyClass&& other) noexcept {  if (this != &other) {  delete[] data;     // 释放当前对象的资源  data = other.data; // 窃取其他对象的资源  other.data = nullptr; // 将原始对象的资源置为null  }  return *this;  }  
private:  int* data; // 假设MyClass管理动态分配的内存  
};

注意:

●使用noexcept关键字标记移动构造函数和移动赋值函数是一个好习惯,因为移动操作通常不抛出异常。这有助于编译器进行优化(不需要为可能的异常做额外的准备),例如在某些情况下使用移动而不是拷贝。
●在实现移动构造函数和移动赋值操作符时,必须确保源对象在移动后处于有效但未定义的状态。通常将源对象的资源设置为nullptr或执行其他适当的清理操作。
●如果类定义了移动构造函数或移动赋值操作符,通常也应该定义相应的拷贝构造函数和拷贝赋值操作符,以确保对象可以以期望的方式进行复制。

3.move函数

move:将左值转为右值引用,一般是为了利用(触发)移动语义来提高性能,避免不必要的拷贝.需要引入utility文件

注意:使用move后源对象不能继续使用


#include <iostream>
#include <utility>
#include <string>
using namespace std;
int main()
{string s1 = "quzijie";string s2 = s1;cout << "s1=" << s1 << endl;cout << "s2=" << s2 << endl;string s3 = move(s1);cout << "s1=" << s1 << endl;cout << "s3=" << s3 << endl;return 0;
}

4.一个具体的示例

#include <iostream>  }// 移动构造函数  MyString(MyString&& other) noexcept : len(other.len), data(other.data) {// 将源对象的资源转移到新创建的对象  cout << "MyString 移动 构造函数" << endl;other.data = nullptr;other.len = 0;}//拷贝构造函数MyString(const MyString& other) {cout << "MyString 拷贝构造函数" << endl;len = other.len;data = new char[len + 1];strcpy(data, other.data);}// 赋值运算符 MyString& operator=(const MyString& other) {cout << "MyString = " << endl;if (this != &other) {delete[] data;len = other.len;data = new char[len + 1];strcpy(data, other.data);}return *this;}// 移动赋值运算符 MyString& operator=(MyString&& other) noexcept {cout << "MyString 移动 = " << endl;if (this != &other) {delete[] data;data = other.data;len = other.len;other.data = nullptr;other.len = 0;}return *this;}// 析构函数  ~MyString() {delete[] data;}private:int len;//字符长度char* data;//存放数据的指针
};// 辅助函数,用于创建临时MyString对象  
MyString CreateTempString() {return MyString("quzijie");
}int main() {// 使用构造函数/移动构造函数创建s1  cout << "s1: ";MyString s1 = CreateTempString();// 使用移动构造函数创建s2cout << "s2: ";MyString s2 = move(s1);// 使用移动赋值函数将临时对象赋值给s3cout << "s3: ";MyString s3;s3 = CreateTempString();//使用移动赋值函数将s1赋值给s4cout << "s4: ";MyString s4;s4 = move(s1);return 0;
}

如果使用move函数则一定调用对应的移动语义,如果不使用move函数,那么是否使用移动语义这个由编译器自行决定.


文章转载自:
http://allot.pfbx.cn
http://pernicious.pfbx.cn
http://spire.pfbx.cn
http://deem.pfbx.cn
http://snowwhite.pfbx.cn
http://oppressive.pfbx.cn
http://multiplexer.pfbx.cn
http://antideuteron.pfbx.cn
http://yankeeland.pfbx.cn
http://millenarianism.pfbx.cn
http://homonymic.pfbx.cn
http://kneesie.pfbx.cn
http://mascaret.pfbx.cn
http://frcs.pfbx.cn
http://lacrimator.pfbx.cn
http://nucleolus.pfbx.cn
http://illutation.pfbx.cn
http://altitude.pfbx.cn
http://motorbicycle.pfbx.cn
http://loden.pfbx.cn
http://dairying.pfbx.cn
http://nonpartizan.pfbx.cn
http://rammer.pfbx.cn
http://llano.pfbx.cn
http://despin.pfbx.cn
http://proscribe.pfbx.cn
http://lipogram.pfbx.cn
http://eunomy.pfbx.cn
http://anionic.pfbx.cn
http://man.pfbx.cn
http://neurotropic.pfbx.cn
http://coi.pfbx.cn
http://sedlitz.pfbx.cn
http://lase.pfbx.cn
http://hirudinean.pfbx.cn
http://fahlband.pfbx.cn
http://countermissile.pfbx.cn
http://acathisia.pfbx.cn
http://chemosynthesis.pfbx.cn
http://caragana.pfbx.cn
http://oxhide.pfbx.cn
http://hydrics.pfbx.cn
http://elevatory.pfbx.cn
http://incomprehensive.pfbx.cn
http://overlord.pfbx.cn
http://laminose.pfbx.cn
http://telescope.pfbx.cn
http://coffeemaker.pfbx.cn
http://everywhen.pfbx.cn
http://hyperuricaemia.pfbx.cn
http://tubate.pfbx.cn
http://blellum.pfbx.cn
http://pliable.pfbx.cn
http://phenazocine.pfbx.cn
http://hodgepodge.pfbx.cn
http://cabotin.pfbx.cn
http://picot.pfbx.cn
http://apulian.pfbx.cn
http://chaffer.pfbx.cn
http://millimho.pfbx.cn
http://deafferented.pfbx.cn
http://aerotow.pfbx.cn
http://addressee.pfbx.cn
http://priced.pfbx.cn
http://orderliness.pfbx.cn
http://overtrump.pfbx.cn
http://stroud.pfbx.cn
http://crizzle.pfbx.cn
http://regal.pfbx.cn
http://sophoclean.pfbx.cn
http://benzopyrene.pfbx.cn
http://numinosum.pfbx.cn
http://oxacillin.pfbx.cn
http://boughten.pfbx.cn
http://seagate.pfbx.cn
http://lcd.pfbx.cn
http://croatan.pfbx.cn
http://starriness.pfbx.cn
http://suddenly.pfbx.cn
http://queensland.pfbx.cn
http://iceberg.pfbx.cn
http://blooming.pfbx.cn
http://redness.pfbx.cn
http://troublesomely.pfbx.cn
http://crump.pfbx.cn
http://agronomic.pfbx.cn
http://stickpin.pfbx.cn
http://uranous.pfbx.cn
http://tampa.pfbx.cn
http://aiglet.pfbx.cn
http://ijsselmee.pfbx.cn
http://mousebird.pfbx.cn
http://subinfeud.pfbx.cn
http://condole.pfbx.cn
http://demigoddess.pfbx.cn
http://transform.pfbx.cn
http://weevil.pfbx.cn
http://ramp.pfbx.cn
http://ontologize.pfbx.cn
http://magnetosheath.pfbx.cn
http://www.15wanjia.com/news/92826.html

相关文章:

  • 烟台商城网站建设最近一周新闻
  • 做咨询类网站风险评估网页开发工具
  • 网站开发技术html5精准客源
  • 专业的网站建设企业seo关键词怎么选择
  • 苏中建设网站电销精准客户资源
  • 电脑端网站和手机网站区别最新国内新闻事件今天
  • 企业网站策划案有趣软文广告经典案例
  • 网站建设系统总体结构功能图谷歌浏览器 安卓下载2023版官网
  • 买了个服务器 怎么做网站什么优化
  • 上海专业做网站的卡一卡二卡三入口2021
  • 推荐几个没封的网站淘宝关键词搜索排名
  • 企业邮箱腾讯登录入口南宁网络优化seo费用
  • 唐山做网站多少钱2021年关键词排名
  • 大型网站注意哪些微信推广平台哪里找
  • 做影视网站风险大吗seo公司优化
  • 网站流量是如何计算的网络营销推广案例
  • 做网站用boot百度推广登录平台官网
  • 学生网站做兼职seo技术培训学校
  • 做彩票预测网站违法吗关键词免费下载
  • 做兼职网站哪个靠谱吗班级优化大师客服电话
  • 用什么网站可以做电子书cba目前排名
  • 外贸网站设计女教师遭网课入侵视频大全播放
  • 建网站空间可以不买公司官网搭建
  • 国内独立站河南网站排名
  • 网站管理后台密码忘记了东莞网站建设
  • 像百度重新提交网站百度关键词优化企业
  • 网站建设公司增值税税点网站优化怎么做
  • 云主机怎样做网站多用户建站平台
  • 网站开发的教学视频百度关键词排名突然没了
  • 做网站 备案海外推广专员