以下情況都會呼叫拷貝建構函式:
①
乙個物件以值傳遞的方式傳入函式體
例如:
已知class a,
class b
void func(a a);
void func(a a)
func(b b);//此時函式對b的操作是呼叫拷貝建構函式後的臨時拷貝物件。(
多數傳指標
)②乙個物件以值傳遞的方式從函式返回
如:return b;
③乙個物件需要通過另外乙個物件進行初始化。直接賦值
淺拷貝:在類中沒有顯式地宣告乙個拷貝建構函式,那麼,編譯器將會自動生成乙個預設的拷貝建構函式,該建構函式完成物件之間的位拷貝。位拷貝又稱淺拷貝
深拷貝:
自己定義拷貝建構函式,類似:
student (student & s) //資源複製函式
{ if(this==&s)
{ cout<<"錯誤:不能將乙個物件複製到自己!"<
深拷貝和淺拷貝
淺拷貝就是物件的資料成員之間的簡單賦值,如你設計了乙個沒有類而沒有提供它的複製建構函式,當用該類的乙個物件去給令乙個物件賦值時所執行的過程就是淺拷貝,如 class a a private int data int main 這一句b a 就是淺拷貝,執行完這句後b.data 5 如果物件中沒有其他...
深拷貝和淺拷貝
ios提供了copy和mutablecopy方法,顧名思義,copy就是複製了乙個imutable的物件,而mutablecopy就是複製了乙個mutable的物件。以下將舉幾個例子來說明。1 系統的非容器類物件 這裡指的是nsstring nsnumber等等一類的物件。nsstring stri...
淺拷貝和深拷貝
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...