前言
重讀《C++ Primer 第5版》,記錄核心知識點。C++11 引入現代風格,簡潔優雅、高效高質。
學習觀點
- 想像自己是編譯器,理解語法語意。
- C++「兩面性」:功能豐富但實務中僅使用子集,依專案取捨(RTTI、虛擬繼承、異常等)。
- 先掌握大觀念,細節隨需深入。
核心組件
- 內建型別:整數、字元、浮點、布林、void。
- 變數:命名物件。
- 運算式與陳述式:操作資料。
- 控制結構:if、while、for、switch。
- 函式:可呼叫計算單元。
- 自訂型別:class、struct、union、enum。
- 標準庫:容器、演算法、IO、智慧指標等。
型別系統
型別定義資料內容與可用運算。C++ 目標:讓使用者定義型別像內建型別一樣好用。
變數與初始化
- 初始化 ≠ 賦值。初始化創建時給值;賦值銷毀舊值換新值。
- C++11
nullptr 取代 NULL。
- 無號整數迴圈陷阱:
for (unsigned u=10; u>=0; --u) 永真(u 永不小於 0)。
- 引用:別名,綁定初始化後不可重綁,本質為常數指標(佔 4/8 bytes)。
算術型別選擇
- 整數:優先
int(通常 4 bytes),避免 short 溢位。
- 字元:
char 僅用於字元,有號性實作定義。
- 浮點:優先
double,精度足夠且硬體常優化。