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> 通用型別數學巨集