第六章 初始化與清除
這一章說實話沒什麼東西。我用了一小時看完了。不過關於析構函式我一直有乙個疑問,有興趣的同學到我部落格討論一下吧。
我們都知道,在c++裡當宣告乙個類時,如果你不寫建構函式,系統就會自動生成乙個預設建構函式。由於此建構函式往往不盡人意,我們一般會重寫建構函式。且當我們定義了自己的建構函式之後,它就會「覆蓋」預設建構函式。即系統就不會再產生預設建構函式了。
這點是否對析構函式也適用呢?
然而書上很多析構函式都是這個樣子的:~a()
也就是說,這樣不僅覆蓋了預設析構函式,且在其實現部分只寫了句廢話。
讓我很難接受。
難道預設的析構函式只是個形式?因為利用一些變數的生命週期,即使不去析構,記憶體也會被自動釋放的。否則的話,我們究竟給予預設的析構函式多大的「期望」呢?
請教一下以下三種情況所能分別達到的析構效果
假設有乙個類如下:
class a
//~~~~~~~~~~~~~~~~~
//用三種方法寫這一行
};
關於~~~~~~~~~~~~一行:
第一種情況:什麼都不寫。
第二種情況:~a()
第三種情況:~a()
這三種情況對a,b,c對應記憶體的釋放情況分別是怎樣的呢?
thinking in C 讀書日誌(二)
2007 08 01 第二章物件的建立與使用 第二章主要講述 c 的一些基礎知識和基本語法,不過我們仍能從書中學到新的東西。這次盡量減小文章的篇幅。主要分兩方面寫 1.推薦知識點,從廣度上覆蓋本章精華 2.對特定某個知識點的進一步研究 從深度上進行探索。1 直譯器與翻譯器 p28 初始學 c 的時候...
錯誤檢查 Thinking in C
為本書其餘部分改進錯誤檢查是很方便的。用內聯函式可以簡單地包括乙個檔案而不用擔 心連線什麼。到目前為止,assert 巨集已用於 錯誤檢查 但它真正用處是除錯並終將被能夠 在執行時提供更多有用資訊的東西代替。何況異常處理程式 在 1 7章介紹 已提供了更多的處 理這些錯誤的有效的方法。這是預處理器仍...
Thinking in C 第2版第一卷讀書筆記
thinking in c pdf電子書 c 中先編譯,後連線 編譯 將原始碼編譯為 連線 將庫函式和各種自定義函式依次連線成為乙個可執行檔案。c 中 include 不再使用 h字尾 include 變在了 include include 呼叫程式 控制台方式 system 程式名 include...