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