c 學習 複製建構函式

2021-04-26 04:51:47 字數 633 閱讀 4648

複製建構函式是個非常微妙的函式,如果不能深刻理解它,可是會出現很多莫名奇妙的錯誤,下面通過乙個程式來詳細的介紹其中的奧妙。

1 c++中的隱士成員函式

(1)預設建構函式,如果沒有定義

(2)複製建構函式,如果沒有定義

(3)賦值操作符,如果沒有定義

(4)預設析構函式,如果沒有定義

(5)位址操作符,如果沒有定義

2 重點講一下複製建構函式

複製建構函式講乙個物件複製 到乙個新建的物件中,也就是說,它用於初始化的過程中,而不是常規的賦值過程中。

classname(const  classname &);

(1)複製建構函式的功能

逐個複製非靜態成員,複製的是值。這就會導致乙個問題,在物件中有指標時,只是複製的指標的位址,而沒有複製實際的內容,這時,我們必須顯示的定義複製建構函式來解決這個問題。

(2)複製建構函式並沒有在建構函式中增加新建物件的個數,但是他卻會呼叫析構函式,這就會導致你在建構函式中的計數不準確。

(3)就像(1)中提到的,它只是複製了指標的位址,因此,物件呼叫析構函式的時候,最先呼叫析構函式的那個物件釋放了指標指向的空間,但是當其他物件再次呼叫析構函式的時候,還會去釋放這段空間,這就導致了同乙個空間被delete兩次,同常表現為亂碼。

c 學習 複製建構函式

複製建構函式是個非常微妙的函式,如果不能深刻理解它,可是會出現很多莫名奇妙的錯誤,下面通過乙個程式來詳細的介紹其中的奧妙。1 c 中的隱士成員函式 1 預設建構函式,如果沒有定義 2 複製建構函式,如果沒有定義 3 賦值操作符,如果沒有定義 4 預設析構函式,如果沒有定義 5 位址操作符,如果沒有定...

C 學習 建構函式與複製建構函式

在建構函式的函式頭初始化 includeusing namespace std class rectangle private const int length int width int main void 複製建構函式 預設複製建構函式的機制 includeusing namespace std...

C 複製建構函式

c 複製建構函式,一般在一下幾種情況中出現 1 物件以值傳遞的方式傳入函式時 2 物件以值傳遞的的方式從函式返回 3 乙個物件通過另乙個物件初始化 4 陣列 根據陣列中的初始化列表初始化陣列的時候。5 容器 初始化順序容器中的元素 有3種情況必須使用複製建構函式 a 如果有資料成員是指標 b 要在建...