91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在c++項目中移動構造

發布時間:2021-02-26 16:47:21 來源:億速云 閱讀:309 作者:Leah 欄目:開發技術

如何在c++項目中移動構造?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

移動構造

  • 什么時候該觸發移動構造?

                有可被利用的臨時對象

  • 移動構造函數:

     class_name ( class_name && )

//例:函數返回含有指針成員的對象(版本1)

//使用深層復制構造函數

//返回時構造臨時對象,動態分配將臨時對象返回到主調函數,然后刪除臨時對象。

#include<iostream>

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<<getNum().getInt()<<endl;

  return 0;

}

//運行結果:

Calling constructor...

Calling copy constructor...

Destructing...

0

Destructing...
//例:函數返回含有指針成員的對象(版本2)

//使用移動構造函數

//將要返回的局部對象轉移到主調函數,省去了構造和刪除臨時對象的過程。

#include<iostream>

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...

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

承德县| 南丹县| 封丘县| 陆丰市| 含山县| 岳西县| 手游| 淮滨县| 义乌市| 延寿县| 梓潼县| 保德县| 阳西县| 区。| 弋阳县| 盐边县| 晴隆县| 河西区| 余姚市| 周口市| 封开县| 大竹县| 陆良县| 靖远县| 西安市| 定西市| 双牌县| 泸溪县| 青阳县| 深水埗区| 浪卡子县| 江孜县| 福建省| 平泉县| 宁南县| 富阳市| 聂拉木县| 西乡县| 襄城县| 栾城县| 武穴市|