c 特別版 c 之父建議筆記 一

2022-04-06 12:55:30 字數 1741 閱讀 1869

c++程式語言十週年中文紀念版,今天早上到手了.

本書去年有借同事的看過一點,寫的挺好的,讀起來的感覺也不錯,昨晚想起來了,就下了訂單,希望可以慢慢的把他給讀完!

書中有c++之父bjarne stroustrup給出的許多建議,這些對日常寫程式是非常有用的,在此慢慢讀著,記錄下這些建議!

關於這些建議,忠告,作者闡釋如下:

更新特殊或更詳盡的實用規則可以在每章最後的"忠告"一節裡找到.請記住,這些忠告只是粗略的實用規則,而不是萬古不變的定律.它們只應使用在"合理的地方".從來就沒有任何東西能夠替代智慧型,經驗,常識和好的鑑賞力.

我發現具有"絕不要做這個"形式的規則不太有幫助.因此大部分忠告被寫成應該做什麼的建議,而否定性的建議也傾向於不採用絕對禁止的短語.據我所知,沒有任何一種主要的c++特徵沒有被良好的使用過.在有關"忠告"的節裡不包括解釋,相反,每條忠告都引用了本書中某些適當的章節.在給出否定性忠告時,對應章節裡通常都提供了有關其它的替代方式的建議.

中文版序 p.vii

第1章 致讀者 p.13

乙個人對c了解越好,在寫c++程式時大概就越難避免c的風格,並會因此丟掉c++的某些潛在優勢.....這裡是幾個有關的要點,在這些地方做同樣的事情時,在c++裡存在比c更好的方式:

1:在c++裡幾乎不需要用巨集.用const或enum定義明顯的常量,用inline避免函式呼叫的額外開銷,用template去刻畫一族函式或者型別,用namespace去避免名稱衝突.

2:不要在你需要變數之前去宣告它,以保證你能立即對它進行初始化.宣告可以出現在能出現語句的所有位置上,可以出現在for語句的初始化部分,也可以出現在條件中.

3:不要用malloc().new運算子能將同樣的事情做的更好.對於realloc(),請試一試vector.

4:試著去避免void*,指標算術,聯合和強制,除了在某些函式或類實現的深層之外.在大部分情況下,強制都是設計錯誤的指示器.如果你必須使用某個顯式的型別轉換,請設法去用乙個"新的強制",設法寫出乙個描述你想做的事情的更新精確的語句.

5:盡量少用陣列和c風格的字串.與傳統的c風格相比,使用c++標準庫string和vector常常可以簡化程式設計.

第1章 致讀者 p.15

1:在程式設計時,你是在為你針對的某個問題的解決方案中的思想建立起一種具體表示.讓程式的結構盡可能地直接反映這些思想:

a:如果你能把"它"看成乙個獨立的概念,就把它做成乙個類.

b:如果你能把"它"看成乙個獨立的實體,就把它做成某個類的乙個物件.

c:如果兩個類有共同的"介面",將此"介面"做成乙個抽象類.

d:如果兩個類的實現有某些顯著的共同東西,將這些共性做成乙個基類.

e:如果乙個類是一種物件的容器,將它做成乙個模板.

f:如果乙個函式實現對某容器的乙個演算法,將它實現對一族容器可用的模板函式.

g:如果一組類,模板等相互之間有邏輯關係,將它們放進乙個名字空間裡.

2:在你定義乙個並不是實現某個像矩陣或複數這樣的資料物件的類時,或者定義乙個低層的型別如鏈結表的時候:

a:不要使用全域性資料(使用成員).

b:不要使用全域性函式.

c:不要使用公用資料成員.

d:不要使用友元,除非為了避免[a]或[c].

e:不要在乙個類裡面放"型別域(標誌或)";採用虛函式.

f:不要使用inline函式,除非做為效果顯著的優化.

第2章 c++概覽 p.39

1:不用害怕,一切都會隨著時間的推移而逐漸明朗起來.

2:你並不需要在知道了c++的所有細節之後才可以寫出好的c++程式.

C 程式語言(特別版)感悟

c 語言學習 第一部分 導論 從c語言學習的人來學習c 語言,在寫c 程式時,就很難丟掉c語言的風格,這樣就會因此丟到c 語言的一些潛在的優勢。在這裡列舉出c 和c語言的幾點 風格差別之處。1 在c 風格程式中,很少使用巨集定義。用const或者enum定義明顯的常量,用inline避免函式呼叫的額...

C 程式語言 特別版 乙個桌面計算器

program endexpr list end end表示輸入結束 expr list expression print print表示分號 expression print expr list expression expression term expression term term ter...

《C 程式語言》(特別版)第四章答案

1.2 讓 hello,world 程式執行。如果程式無法按所寫的形式執行,請看b.3.1節 include using namespace std int main 2.1 對於4.9節的每個宣告做下面的事情 如果該宣告不是乙個定義,請為它寫乙個定義。如果該宣告時乙個定義,請改寫,使它成為不是定義...