1.呼叫拷貝建構函式的時機:
(1)使用 = 時會發生。
(2)將乙個物件作為實參傳遞給乙個非引用型別的形參。
(3)從乙個返回型別為非引用型別的函式返回乙個物件。
2. 析構函式的呼叫時機:
(1)變數離開作用域時被銷毀,呼叫析構函式。
(2)乙個物件被銷毀時,其成員被銷毀。
(3)容器被銷毀時,其元素被銷毀。
(4)new出來的物件,被delete時,呼叫析構函式。
(5)臨時物件,如傳遞引數時,當建立它的完整表示式結束時被銷毀。
3.在使用delete時要注意乙個問題,當乙個指標被delete了,它所指向的記憶體區域就已經被釋放了。而不能再delete,會出現異常。更嚴重的,如果該段記憶體被其他內容占用了,會有更嚴重的後果。所以在delete乙個指標之後,最好將其置為null。但是也不是好的方法,因為同一塊記憶體區域,可能有好幾個指標指向,雖然delete了其中乙個,並置空,但是其他的仍然可以delete,發生意向不到的後果。
a* pa = new a();
a* pa1 = pa;
delete pa;
pa = nullptr;
delete pa1;
所以在delete時一定要謹慎。
最好使用的是只能指標,不過這個還木有掌握,有待填坑。
C primer 讀書筆記
第2 章 變數和基本型別 1 變數直接初始化和變數 複製初始化 int ival 1024 direct initialization int ival 1024 copy initialization 初始化不是賦值 2 內建型別復 制初始化和直接初始化幾乎沒有區別 但 對類型別物件來 說,有些初...
C Primer讀書筆記
前些日子開始看 c primer 順便做一些筆記,既有書上的,也有自己理解的。因為剛學c 不久,筆下難免有謬誤之處,行文更是凌亂 所幸不是用來顯配的東西,發在linuxsir只是為了方便自己閱讀記憶,以防只顧上網忘了正事。書看了不到一半,所以大約才寫了一半,慢慢補充。const要注意的問題 1 下面...
C Primer讀書筆記
前些日子開始看 c primer 順便做一些筆記,既有書上的,也有自己理解的。因為剛學c 不久,筆下難免有謬誤之處,行文更是凌亂 所幸不是用來顯配的東西,發在linuxsir只是為了方便自己閱讀記憶,以防只顧上網忘了正事。書看了不到一半,所以大約才寫了一半,慢慢補充。const要注意的問題 1 下面...