1. 程式人生 > >C++(二十七) — 深拷貝、淺拷貝

C++(二十七) — 深拷貝、淺拷貝

1、複製建構函式

  複製建構函式,也是建構函式。只在初始化時呼叫,如果定義物件後賦值,比如,t1=t2,則只是運算子過載,沒有呼叫建構函式。

2、淺拷貝、深拷貝

  指對於類或結構體這類複合型別的變數。當類的成員變數中含有指標或引用時,在賦值或初始化過程中,若只修改指標指向,沒有開闢新的空間,則是淺拷貝;(因為所指內容空間只有一份,若其中一個變數銷燬時,空間釋放,則另一個變數就出現指標懸掛問題)。

  深拷貝:開闢另一個記憶體空間(在堆記憶體中),將內容複製過去。這樣就存在兩個記憶體空間,儲存相同內容。

   C++中預設的等號操作符也是淺拷貝,只是把指標的記憶體地址拷貝了,但沒有開闢對應的記憶體空間。