介紹移動拷貝建構函式
#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.info
和mc.info
指向的是同一塊資料"abc"。但由於obj
是mcopy()
的區域性自動變數,因此在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...