拷貝建構函式和賦值構造函式呼叫次序

2021-04-26 10:41:58 字數 475 閱讀 2661

class cprintelement

;cprintelement::cprintelement(const cprintelement& temp){}

cprintelement& cprintelement::operator =(const cprintelement& temp)

int main()

cprintelement ele1; // 呼叫建構函式

elel1.initialelement(.....);

cprintelement ele2=ele1; // ele2物件不存在,所以呼叫拷貝建構函式,進行構造過程

ele2.initialelement(...);

elel2=ele1; // ele2物件已經存在,進行賦值建構函式

呼叫次序如下:

建構函式

拷貝建構函式

賦值建構函式

析構函式

析構函式

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

class cmystring 賦值建構函式 cmystring cmystring operator const cmystring str 新分配記憶體,將str的m pdata記憶體拷貝到m pdata中 m pdata new char strlen str.m pdata 1 strcpy...

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

拷貝構造是確確實實構造乙個新的物件,並給新物件的私有成員賦上引數物件的私有成員的值,新構造的物件和引數物件位址是不一樣的,所以如果該類中有乙個私有成員是指向堆中某一塊記憶體,如果僅僅對該私有成員進行淺拷貝,那麼會出現多個指標指向堆中同一塊記憶體,這是會出現問題,如果那塊記憶體被釋放了,就會出現其他指...

拷貝建構函式和賦值構造

為什麼空類可以建立物件呢?複製建構函式的引數可以是 const 引用,也可以是非 const 引用。一般使用前者,這樣既能以常量物件 初始化後值不能改變的物件 作為引數,也能以非常量物件作為引數去初始化其他物件。乙個類中寫兩個複製建構函式,乙個的引數是 const 引用,另乙個的引數是非 const...