1. 程式人生 > >50條忠告(沒事請看看)

50條忠告(沒事請看看)

1.把C++當成一門新的語言學習;

2.看《Thinking In C++》,不要看《C++變成死相》;

3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因為他們很難而我們自己是初學者所以就不看;

4.不要被VC、BCB、BC、MC、TC等詞彙所迷惑——他們都是整合開發環境,而我們要學的是一門語言;

5.不要放過任何一個看上去很簡單的小程式設計問題——他們往往並不那麼簡單,或者可以引伸出很多知識點;

6.會用Visual C++,並不說明你會C++;

7.學class並不難,template、STL、generic programming也不過如此——難的是長期堅持實踐和不遺餘力的博覽群書;

8.如果不是天才的話,想學程式設計就不要想玩遊戲——你以為你做到了,其實你的C++水平並沒有和你通關的能力一起變高——其實可以時刻記住:學C++是為了編遊戲的;

9.看Visual C++的書,是學不了C++語言的;  

16.把時髦的技術掛在嘴邊,還不如把過時的技術記在心裡;

18.學習程式設計最好的方法之一就是閱讀原始碼;

19.在任何時刻都不要認為自己手中的書已經足夠了;

20.請閱讀《The Standard C++ Bible》(中文版:標準C++寶典),掌握C++標準;

21.看得懂的書,請仔細看;看不懂的書,請硬著頭皮看;

22.別指望看第一遍書就能記住和掌握什麼——請看第二遍、第三遍;

23.請看《Effective C++》和《More Effective C++》以及《Exceptional C++》;

24.不要停留在整合開發環境的搖籃上,要學會控制整合開發環境,還要學會用命令列方式處理程式;

25.和別人一起討論有意義的C++知識點,而不是爭吵XX行不行或者YY與ZZ哪個好;

26.請看《程式設計實踐》,並嚴格的按照其要求去做;

27.不要因為C和C++中有一些語法和關鍵字看上去相同,就認為它們的意義和作用完全一樣;

28.C++絕不是所謂的C的“擴充”——如果C++一開始就起名叫Z語言,你一定不會把C和Z語言聯絡得那麼緊密;

29.請不要認為學過XX語言再改學C++會有什麼問題——你只不過又在學一門全新的語言而已;

30.讀完了《Inside The C++ Object Model》以後再來認定自己是不是已經學會了C++;

31.學習程式設計的祕訣是:程式設計,程式設計,再程式設計;

32.請留意下列書籍:《C++面向物件高效程式設計(C++ Effective Object-Oriented Software Construction)》《面向物件軟體構造(Object-Oriented Software Construction)》《設計模式(Design Patterns)》《The Art of Computer Programming》; 

34.請把書上的程式例子親手輸入到電腦上實踐,即使配套光碟中有原始碼;

35.把在書中看到的有意義的例子擴充;

36.請重視C++中的異常處理技術,並將其切實的運用到自己的程式中;

37.經常回顧自己以前寫過的程式,並嘗試重寫,把自己學到的新知識運用進去;

38.不要漏掉書中任何一個練習題——請全部做完並記錄下解題思路;

39.C++語言和C++的整合開發環境要同時學習和掌握;

40.既然決定了學C++,就請堅持學下去,因為學習程式設計語言的目的是掌握程式設計技術,而程式設計技術是跨語言的;

41.就讓C++語言的各種平臺和開發環境去激烈的競爭吧,我們要以學習C++語言本身為主;

42.當你寫C++程式寫到一半卻發現自己用的方法很拙劣時,請不要馬上停手;請儘快將餘下的部分粗略的完成以保證這個設計的完整性,然後分析自己的錯誤並重新設計和編寫(參見43);

43.別心急,設計C++的class確實不容易;自己程式中的class和自己的class設計水平是在不斷的程式設計實踐中完善和發展的;

44.決不要因為程式“很小”就不遵循某些你不熟練的規則——好習慣是培養出來的,而不是一次記住的;

45.每學到一個C++難點的時候,嘗試著對別人講解這個知識點並讓他理解——你能講清楚才說明你真的理解了;

46.記錄下在和別人交流時發現的自己忽視或不理解的知識點;

47.請不斷的對自己寫的程式提出更高的要求,哪怕你的程式版本號會變成Version 100.XX;

48.儲存好你寫過的所有的程式——那是你最好的積累之一;

49.請不要做浮躁的人;

50.請熱愛C++!

C++標頭檔案一覽  C、傳統 C++

#include <assert.h>    設定插入點 #include <ctype.h>    字元處理 #include <errno.h>     定義錯誤碼 #include <float.h>    浮點數處理 #include <fstream.h>   檔案輸入/輸出 #include <iomanip.h>    引數化輸入/輸出 #include <iostream.h>   資料流輸入/輸出 #include <limits.h>    定義各種資料型別最值常量 #include <locale.h>    定義本地化函式 #include <math.h>     定義數學函式 #include <stdio.h>    定義輸入/輸出函式 #include <stdlib.h>    定義雜項函式及記憶體分配函式 #include <string.h>    字串處理 #include <strstrea.h>   基於陣列的輸入/輸出 #include <time.h>     定義關於時間的函式 #include <wchar.h>     寬字元處理及輸入/輸出 #include <wctype.h>    寬字元分類

標準 C++ 

#include <algorithm>     通用演算法 #include <bitset>      位集容器 #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex>     複數類 #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <deque>      雙端佇列容器 #include <exception>    異常處理類 #include <fstream> #include <functional>    定義運算函式(代替運算子) #include <limits> #include <list>       線性列表容器 #include <map>       對映容器 #include <iomanip> #include <ios>      基本輸入/輸出支援 #include <iosfwd>    輸入/輸出系統使用的前置宣告 #include <iostream> #include <istream>     基本輸入流 #include <ostream>     基本輸出流 #include <queue>       佇列容器 #include <set>       集合容器 #include <sstream>     基於字串的流 #include <stack>      堆疊容器     #include <stdexcept>    標準異常類 #include <streambuf>   底層輸入/輸出支援 #include <string>     字串類 #include <utility>     通用模板類 #include <vector>     動態陣列容器 #include <cwchar> #include <cwctype>

C99 增加

#include <complex.h>  複數處理 #include <fenv.h>    浮點環境 #include <inttypes.h>  整數格式轉換 #include <stdbool.h>   布林環境 #include <stdint.h>   整型環境 #include <tgmath.h>  通用型別數學巨集