跟著做的C 20教程 例項27 移動拷貝建構函式

2021-10-20 06:13:56 字數 885 閱讀 9735

介紹移動拷貝建構函式

#include

#include

#include

class

movecopy

;movecopy

(movecopy&& src)

noexcept

~movecopy()

}};movecopy mcopy()

intmain

(int argc,

char

** ar**)

呼叫了移動拷貝建構函式

abc呼叫了移動拷貝建構函式

呼叫了移動拷貝建構函式

mc1.info 是否等於nullptr:1

mc2.info:abc

mcopy()在返回時如果使用淺拷貝obj.infomc.info指向的是同一塊資料"abc"。但由於objmcopy()的區域性自動變數,因此在mcopy()結束後其指向的資料就被釋放了,因此必須採用深拷貝。

但深拷貝有其缺陷,就是需要重新申請新的資源,效率低下。為此我們想既然obj沒有用了,何不採用淺拷貝直接將obj的資源給mc。因此就誕生了移動拷貝建構函式。只要拷貝後,源資源不再被需要,且定義了移動拷貝建構函式的情況,編譯器都會為我們選擇移動拷貝建構函式,來提高程式效率。我們也可以使用std::move來顯示呼叫移動拷貝建構函式。從例項中可以看出呼叫後mc1.info變成了nullptr

跟著做的C 20教程 例項12 if

include iostream intmain int argc,char ar else if score 69 else if score 59 else return0 執行結果 執行後會程式會讓你輸入乙個分數,如果分數大於89,輸出 恭喜你得了a 如果分數小於90大 69,輸出 真棒你得了...

跟著做的C 20教程 例項25 拷貝建構函式

include include class product std string description double price 0.0 product 預設建構函式 product const product src 拷貝建構函式 int product timesofinvokingcopyc...

c 2 0泛型學習 一 C 教程

1.未使用泛型的stack類 1using system 2 ublic class stack 410 public stack int size 11 15 public void push object item 16 23 public object pop 24 30 else 31 35...