1.2學習c++
在學習c++時, 最重要的事情就是集中關注概念, 不要迷失在語言的技術細節中。c++支援多種不同的程式設計風格。
1.3.2哲學註記
c語言的基本設計觀點: 要求「盡可能地接近機器的」語言,以使機器的所有重要方面都能以一種對程式設計師相當明顯的方式簡單而有效地加以處理。
c++是「盡可能接近需要解決的問題」, 這樣才能使解決方案中的概念能夠直接而緊湊地表達出來。
1.6.1給c程式設計師的建議
[1] 在c++裡幾乎不需要用巨集。用const或enum定義明顯的常量,用inline避免函式呼叫的額外開銷, 用template去刻畫一族函式或者型別。用namespace避免名字衝突。
[2] 不需要在你使用某個變數之前宣告它,以保證你能立即能對它進行初始化。在c++中宣告可以出現在任何地方。
[3] 不要用malloc()。new運算子能將同樣的事做的更好。對於realloc()請可以用vector。
[4] 試著避免void*
、指標算術、聯合和強制(除了在某些函式或者類實現的深層之外)。 在大部分情況下,強制都是乙個設計錯誤的指示器。
[5] 盡量少用陣列和c風格的字串。 與傳統的c風格相比,使用c++標準庫string。
最重要的是, 試著將程式考慮為一組由類和物件表示的相互作用的概念。而不是一推資料結構和一些去撥弄資料結構中的二進位制位的函式。
1.7有關在c++裡程式設計的思考
在大部分應用中都存在一些概念,它們很不容易表示為某個基本型別,也不容易表述為不相關的資料的函式。
寫出好的程式,最關鍵的就是去設計這些類, 使它們中的每乙個都能清楚的表示某個概念。 這就意味著必須集中注意一些這樣的問題:
這個類的物件應該如何建立?
這個類的物件能夠被複製(銷毀)嗎?
什麼操作能夠作用於這種物件?
如果對這類問題不存在很好的回答, 對應的概念或許是從一開始就不是很清楚。
威力最大的一種管理複雜性的智力工具就是某種層次性的序關係,虛函式常常被用於乙個概念的最一般版本(基類)定義操作
共性的另一種形式可以通過模板表示, 乙個模板刻畫了一族類。
1.8忠告
[1] 在程式設計序時,你是在你針對的某個問題的解決方案中的思想建立起一種具體表示。讓程式的結構盡可能地直接反應這些思想。
[a] 如果你能把「它」看成乙個獨立的概念, 就把它設計成乙個類。
[b] 如果你能把「它」看成乙個獨立的實體, 就把它作為某個類的乙個物件。
[c] 如果兩個類具有共同的介面,將此介面做成乙個抽象類。
[d] 如果兩個類的實現由某些顯著地共同東西, 將這些共性做成乙個基類。
[e] 如果乙個類是一種物件的容器, 將它做成乙個模板。
[f] 如果乙個函式實現對某容器的乙個演算法,將它實現為對一族容器可用的模板函式。
[g] 如果一族類、模板等相互之間有邏輯關係,將它們放在乙個名字空間裡。
[2] 在你定義乙個並不是實現某個像矩陣或複數這樣的數學物件的類時,或者定義乙個底層的型別如鍊表的時候:
[a] 不要使用全域性資料
[b] 不要使用全域性函式
….其他參見p16
第二章 c++概覽
C 學習筆記 第一章
1 整形int 2 浮點型float 3 字元型char 4 布林型boolean 1 字串string 2 複數complexnumber 3 向量vector 4 列表list 例子 1 為了使用string型別,必須包含標頭檔案 include string str hello,world 2...
第一章學習筆記
看c primer已經好幾遍了,但是還是有很多基礎的問題,總是那樣容易忘記,這次看的時候,決定好好的寫寫讀書筆記 希望能夠認真的堅持下去。incluede的兩種不同格式 include some file 表明檔案是乙個標準工程,查詢先檢查預定義的目錄。include my file 表明改檔案是使...
C 第一章(筆記)
1 c語言和c 的發展歷史和基本原理 c 代表過程性語言傳統 c 類代表物件導向語言的傳統 c 模版支援通用程式設計傳統 c程式設計原理 c是過程性語言,強調的是程式設計的演算法方面 c語言前世今生 上世紀70年代,貝爾實驗室,dennis ritchie,開發unix作業系統 傳統上作業系統由組合...