网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

如何在c++项目中移动构造-创新互联

如何在c++项目中移动构造?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联是一家专注于网站建设、网站制作与策划设计,河北网站建设哪家好?创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:河北等地区。河北做网站价格咨询:028-86922220

移动构造


  • 什么时候该触发移动构造?

                有可被利用的临时对象

  • 移动构造函数:

   class_name ( class_name && )

//例:函数返回含有指针成员的对象(版本1)

//使用深层复制构造函数

//返回时构造临时对象,动态分配将临时对象返回到主调函数,然后删除临时对象。

#include

using namespace std;

class IntNum {

public:

  IntNum(int x = 0) : xptr(new int(x)){ //构造函数

    cout << "Calling constructor..." << endl;

   }

  IntNum(const IntNum & n) : xptr(new int(*n.xptr)){//复制构造函数

    cout << "Calling copy constructor..." << endl;

  };

  ~IntNum(){ //析构函数

    delete xptr;

    cout << "Destructing..." << endl;

  }

  int getInt() { return *xptr; }

private:

  int *xptr;

};

//返回值为IntNum类对象

  IntNum getNum() {

    IntNum a;

    return a;

  }

int main() {

  cout<
//例:函数返回含有指针成员的对象(版本2)

//使用移动构造函数

//将要返回的局部对象转移到主调函数,省去了构造和删除临时对象的过程。

#include

using namespace std;

class IntNum {

public:

  IntNum(int x = 0) : xptr(new int(x)){ //构造函数

    cout << "Calling constructor..." << endl;

  }

  IntNum(const IntNum & n) : xptr(new int(*n.xptr)){//复制构造函数

    cout << "Calling copy constructor..." << endl;

   //注:

  //•&&是右值引用

  //•函数返回的临时变量是右值

  }

  IntNum(IntNum && n): xptr( n.xptr){ //移动构造函数

    n.xptr = nullptr;

    cout << "Calling move constructor..." << endl;

  }

  ~IntNum(){ //析构函数

    delete xptr;

    cout << "Destructing..." << endl;

  }

private:

  int *xptr;

};

//返回值为IntNum类对象

  IntNum getNum() {

  IntNum a;

  return a;

}

int main() {

  cout << getNum().getInt() << endl; return 0;

}

//运行结果:

Calling constructor...

Calling move constructor...

Destructing...

0

Destructing...

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联网站建设公司,的支持。


标题名称:如何在c++项目中移动构造-创新互联
本文网址:http://bjjierui.cn/article/jhdjp.html

其他资讯