c++——物件導向(二)
拷貝建構函式:
用乙個已經存在的物件初始化相同型別新物件 ,
呼叫的拷貝建構函式,必須傳引用
防止實參和形參遞迴構造
系統提供的拷貝建構函式 ,淺拷貝,多次釋放同一資源
初始化和賦值的區別:
初始化:定義的同時賦值
賦值:定義後再給值
實參到形參是賦值的過程,
不能按照物件的值進行傳遞,會引起遞迴構造
預設的拷貝構造,物件的記憶體互相初始化,淺拷貝會導致崩潰,拷貝建構函式實現後,**執行正常
cgoods good3 = good2; this指標指向good3,rhs引用good2函式,rhs是外部的,可以直接訪問外部物件私有的成員,同乙個類型別生成的不同物件,共享成員方法,rhs引用的物件和this指標指向的物件,它們的型別是一樣的,
什麼情況下會發生淺拷貝,當物件
建構函式自己無法呼叫,是系統根據定義的物件的型別所選擇的。析構可以自己調,自己調了,系統還調,
預設構造構造good1
帶三個引數的構造構造good2,
拷貝建構函式,用good2拷貝構造good3
賦值運算子過載 用good3給good1賦值
good3析構
good2析構
good1析構
當呼叫good1 = good1時,計算0位址的有效字元,會崩潰,0位址是不可訪問的,防止自賦值,
3步:1.防止自賦值
2.釋放舊資源
3.開闢新資源進行初始化
C 物件導向程式設計《二》 建構函式
class complex 類的前置宣告只是告訴將類的名稱編譯器,並未提供class的任何其他資訊,因此前置宣告使我們得以使用類的指標和引用,而不能使用類的物件,如下 complex p 0 定義乙個類指標 class pointer void func const complex 以complex...
C 物件導向(二) 構造 析構函式
析構函式 destructor 構造 析構順序 建構函式 也叫構造器 在物件建立的時候回自動呼叫,一般用於完成物件的初始化工作 函式名與類同名,無返回值,可以有引數,可以過載,可以有多個建構函式 struct person person int age intmain 一旦自定義了建構函式,必須用其...
C 物件導向程式設計 建構函式
建構函式的相互呼叫又稱為 建構函式初始化器,這是c 的乙個特殊的語法 在有些時候,建構函式內包含一些共同的 為了達到 的復用性,函式初始化器很好的解決了這一問題 示例 如下 using system namespace mycsharppro private int age public perso...