拷貝建構函式和移動建構函式解析

2021-08-11 21:30:33 字數 830 閱讀 7206

/**

* by: gongzhihui

* 2017.12.5

* * 拷貝構造函式呼叫時機:

* 1. 物件作為函式引數

* 2. 物件作為函式返回值

* 3. 用乙個物件初始化另乙個物件:

* t t1;

* t t2(ti);

* t t3 = t1; 此處的 = 不是賦值運算子

* * 拷貝賦值運算子:

* t t1;

* t t2;

* t1 = t2;

* 除了 類名 物件 = 物件 外的 = 應該都是賦值運算子

* * 移動建構函式:

* 用右值初始化物件。

* std::move(物件)將物件轉為右值

* * 移動賦值運算子

* t t1;

* t1 = std::move(t());

*/#include // std::cout

class a

~a()

//拷貝建構函式

a(const a &v)

//拷貝賦值運算子

a& operator = (const a &v)

//移動建構函式

a(a &&v)

//移動賦值運算子

a& operator = (a &&v)

};int main ()

C 移動建構函式和拷貝建構函式

我們用物件 a初始化物件b 後物件 a我們就不在使用 了,但是物件a的空間還在呀 在析構之前 既然拷貝建構函式,實際上就是把a物件的內容複製乙份到b中,那麼為什麼我們不能直接使用a的空間呢?這樣就避免了新的空間的分配,大大降低了 構造的成本 這就是移動建構函式設計的初衷 拷貝建構函式 中,對於指標,...

建構函式和拷貝建構函式

建構函式 簡單地說建構函式是類函式,函式名與類名完全相同,無返回值 建構函式屬於類的成員函式,除了具有一般成員函式的特點外,還具有自己的特點 1 是類的乙個特殊的成員函式,函式名與類名相同 2 訪問屬性應該是public 3 功能是初始化物件,在建構函式中一般不作初始化以外的事情 4 可以在類內定義...

移動拷貝建構函式和移動賦值

my string const char str my string my string 預設的建構函式淺拷貝 不用delete的原因是object ob ob1 一定分配好 my string const my string str 語法沒錯,可能編譯會拋 buffer new char len ...