1. 程式人生 > >賦值運算子和複製建構函式的區別

賦值運算子和複製建構函式的區別

賦值運算子和複製建構函式都是用已存在的B物件來建立另一個物件A。不同之處在於:賦值運算子處理兩個已有物件,即賦值前B應該是存在的;複製建構函式是生成一個全新的物件,即呼叫複製建構函式之前A不存在。 
CTemp a(b); //複製建構函式,C++風格的初始化 
CTemp a=b; //仍然是複製建構函式,不過這種風格只是為了與C相容,與上面的效果一樣 
在這之前a不存在,或者說還未構造好。

CTemp a; 
a=b; //賦值運算子 
在這之前a已經通過預設建構函式構造完成。

例項總結:

重點:包含動態分配成員的類 應提供拷貝建構函式,並重載"="賦值操作符。

以下討論中將用到的例子:

class CExample 

public: 
CExample(){pBuffer=NULL; nSize=0;} 
~CExample(){delete pBuffer;} 
void Init(int n){ pBuffer=new char[n]; nSize=n;} 
private: 
char *pBuffer; //類的物件中包含指標,指向動態分配的記憶體資源 
int nSize; 
};

這個類的主要特點是包含指向其他資源的指標。

pBuffer指向堆中分配的一段記憶體空間。

引用:http://www.cnblogs.com/fairycao/archive/2009/12/16/1625408.html