tc++pl讀書筆記1
第2章 c++概覽
1、什麼是c++
--更好的c
--支援資料抽象
--支援物件導向
--支援通用型程式設計(泛型?)
2、程式設計范型
技術只是相對而言的,不同語言支援不同風格的程式設計,只是說它在實現此風格時會比較方便,不支援這些風格的程式設計會要付出更大的努力。
c一樣可以寫出物件導向的程式,只是需要注意的地方更多,甚至會出奇的困難。
支援某一種范型,不僅需要支援它的語言功能,還需要在一些形式上更加細微的作出編譯或執行時的檢查
bjarne對c++的設計如是說:設計c++就是為了支援資料抽象,物件導向的程式設計和通用型的程式設計,以及在這些風格約束下的傳統的c程式設計技術。它從未有意要給使用者強加某種特殊的程式設計風格
設計范型不是為語言特有的,cpp可以實現各種設計范型
3、過程式程式設計
過程式程式設計:確定你需要哪些過程,採用你能找到的最好的演算法
3.1、變數和算術
3.2、檢驗和迴圈
3.3、指標和陣列
4、模組程式設計
模組程式設計:確定你需要哪些模組,將程式分為模組,將資料隱藏在模組中
此范型也被稱為資料隱藏原理
模組設計需要解決的幾個主要問題,提供介面(介面),限定介面訪問,保證元素的初始化。
常使用名字空間(namespace)去宣告使用者介面。
4.1、分別編譯
最大限度的去進行模組化,用語言特徵去邏輯的表示模組,通過標頭檔案提供介面,從而實現不同的使用者檔案的互聯。
4.2、異常處理
好的介面一定要有異常處理
5、資料抽象
5.1、定義型別的模組
例子stack管理器的介面
namespace stack
在**中,把所有的介面封裝起來,但是卻不是最理想的,此時通過模板實現此使用者定義型別,會達到較好的效果
5.2、使用者定義型別
使用者定義型別:確定你需要哪些型別,為每個型別徒工完整的一組操作。
抽象資料型別,例子:complex的例子,運算子的過載。
5.3、具體型別
具體實現的資料型別於抽象型別相對,抽象型別的介面能夠更完全的將使用者和實現細節隔離
5.4、抽象型別
從模板到真正實現過程中,表示方式和使用者介面 沒有完全分離,反而變成其中程式片斷包含的乙個內容,此時需要放棄真正的區域性 變數
virtual 的意思是「可以在今後由這個類派生的類裡重新定義」
5.5、虛函式
一種虛函式對映常用的實現技術是:讓編譯器把乙個virtual函式的名字轉化為指向這些函式指標表的乙個下標,這種表稱為虛函式表。
6、物件導向程式設計
6.1具體問題
形狀的問題
enum kind;
class shape
此定義出現問題,如果型別域增加,整個**都需要進行變化,
新型別加入,可能需要修改舊**,這樣就導致可重用性過低。
6.2類層次結構
定義所有共同特徵的類,將實現定義為virtual
物件導向程式設計范型:確定需要哪些類,為每乙個類提供完整的一組操作,利用繼承去明確的表示共性。
7、通用型程式設計
7.1、容器
任意型別的型別,可以使用模板,template
例子,將stack型別用template用乙個模板引數取代特定的資料型別
模板是編譯時的一種機制,他們的使用不引起額外的執行時的開銷
7.2、通用型演算法
c++標準庫的容器類和非數值演算法採用通過序列和通過迭代器操作序列的觀念實現通用型演算法
8、附言
c++只是一種語言,重要的是體會對其而言固有的和自然的風格,而不是其所有的語言特徵。
9、忠告
1、不需要知道所有c++的技術細節之後才能寫出好的程式
2、特別關注語言設計技術,而不是各種語言的特徵。
TCPL讀書筆記 1
工作以後,雖然現在做的不是c 方面的工作,但是憑著自己對c 的喜愛,還是決定再看看這本書,書還是我宿舍那哥們的,不過我買下來了,呵呵。第一次寫,不知道寫什麼好,我就我看這本書以後的對細節的認識列舉一下,以供以後參考。首先是指標和引用的問題,經常在網上看到關於這個問題的討論。書中有句話 引用可以理解成...
讀書筆記 1
從我第一次看到windows就對它那花花綠綠的外表所吸引,大學兩年過來,時間又讓我從另乙個角度重新認識的了這些美麗的。本學期開始圖形程式設計的學習,探索windows圖形系統,並對gdi api,directdraw api進行學習。之所以寫部落格,第 一 是想勉勵自己不斷學習,讓大家監督 第 二 ...
讀書筆記1
netstat p525 網路資訊服務是通過本地查詢,還是要連線到遠端資料庫 p527 網路配置檔案?服務資訊函式?linux下如何組網 p527 如何設定計算機的主機名 p528 套接字 第15章 套接字 套接字 p513,523 what 套接字 一種程序間通訊機制 不僅可以本地程序通訊,也可以...