C 基礎筆記(三) 拷貝建構函式

2021-09-28 16:42:38 字數 819 閱讀 3685

1.拷貝建構函式

-拷貝建構函式是一種特殊的建構函式,其形參為本類的物件引用;

-拷貝建構函式是用乙個物件去構造另乙個物件,或者說,用另乙個物件值初始化乙個新構造的物件。

class 類名

;//拷貝建構函式的實現

類名::類名(類名 &物件名)

class cpoint

;cpoint::cpoint(cpoint &pt)

{ m_nx=pt.m_nx;

m_ny=pt.m_ny;

cout<<"請呼叫拷貝建構函式!"<2.預設拷貝建構函式

-如果程式設計師沒有為類宣告拷貝初始化建構函式,則編譯自己生成乙個預設拷貝建構函式;

-這個預設拷貝建構函式的功能是:把初始值物件的每個資料成員的值,都複製到新建立的物件中;

-在預設拷貝建構函式中,拷貝的策略是逐個成員依次拷貝。

3.手動編寫拷貝建構函式

-異常情況:當類建構函式分配了乙個資源(如堆記憶體)的時候,如果拷貝建構函式簡單地製作了該資源的拷貝,就使得兩個物件擁有同乙個資源,所以,當乙個物件已把資源釋放時,另乙個物件再使用時就會異常;

-處理方式:編寫拷貝建構函式,在拷貝資源時,要將資源複製乙份,這樣兩個物件就不會指向不同的資源。

4.拷貝建構函式的應用

1)當用類的乙個物件初始化該類的另乙個物件時;

2)若函式的形參是類的物件,呼叫函式時,實參賦值給形參,系統自動呼叫拷貝建構函式;

3)當函式的返回值是類的物件時,系統自動呼叫拷貝建構函式。

C 學習筆記之建構函式(三)拷貝(複製)建構函式

定義 使用類的乙個物件來構造和初始化另乙個物件,這另乙個物件之前是不存在的。要注意理解拷貝 複製 和賦值的區別,拷貝和複製時另乙個物件之前是不存在的,而賦值是兩個物件都構造好了。如 a a a b a a b a 這是拷貝 a a a b b a 這是賦值 拷貝建構函式的過載宣告如下 a const...

C 基礎(五)拷貝建構函式

拷貝建構函式 深拷貝與淺拷貝 include includeusing namespace std class teacher teacher teacher t teacher void print static char m country private int m age static ch...

C 基礎10 拷貝建構函式

1.1 拷貝建構函式的定義 如果乙個類的建構函式的第乙個引數為所屬類型別的引用。如果還有其他額外引數,且這些額外的引數都有預設值,則該建構函式就叫拷貝建構函式。函式的預設引數必須放在函式宣告中,除非該函式沒有宣告。1.2 拷貝建構函式的作用 拷貝建構函式會在一定的時機被系統自動呼叫。ifndef d...