(GeekBand)C++之路2

在第二周的課程中,我們學習到了C++含有指針的類的寫法,以及對C++程序涉及比原來熟悉了很多。
在這周開始學到了拷貝構造、拷貝賦值、析構這三大函數,在我購買的C++書籍中,剛講到析構的時候也只是一筆帶過(我看到的部分),也不是很清楚析構的作用,而侯老師講的非常清楚,這三大函數出現的時機大部分是在類成員中含有指針的情況。
一下是我對本周課程的整理和思考
看書的時候我對拷貝構造一頭霧水,直接把指針賦值不就可以了嗎?學習之后知道了,淺拷貝容易引發內存泄漏,且兩個指針指向同一內存是件危險的事,故拷貝構造的時候應該采用的是深拷貝。其中,直接取另一個object的private data是允許的(兄弟之間互為friend );
拷貝賦值的操作思路我簡記為了,我把我的東西送給你,所以我沒了這東西(delete內存),你有了一新東西(new一塊新位置),而且是我送你的東西(賦值操作)。雖然有點不順口,不過學習嘛,不擇手段~
析構方面就稍微簡單一些,起到的作用無非就是釋放內存。
第二講之中,認識到了STACK和HEAP,也就清楚了。前者是存在于某作用域內的一塊內存空間,HEAP是由操作系統提供的一塊global空間,程序可動態分配。
關于staic object,其生命在作用域結束之后仍然存在,知道整個程序結束,而棧里的變量,結束后自動調用其析構函數。
關于new的機制,先分配memory,再調用構造函數,delete與之相反。
最后一節 ,侯老師用底層的內存分布的圖片為我們清楚地解釋了內存底層的分布,以及為何new數組之后要用delete[]的形式以及會發生的后果,內存泄漏,也并不是我們想著的內存泄漏。
感覺課程已經越來越有深度,課后不多去翻書寫代碼依舊掌握不了,本來基礎不太好,那就不多說了,我去寫代碼了~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容