內容提要
《C++語法詳解》對C++的語法進行了全面介紹和深入講解,內容包括:C++整型、字元型、浮點型、聲明、定義、typedef、運算符、表達式、左值、選擇語句、循環語句、指針、數組、函式和標識符的作用域、類基礎、類作用域及相關運算符、構造函式、複製構造函式、析構函式、名稱空間、類中的成員、運算符(操作符)重載、繼承、虛函式、多態性、對象模型、虛函式表、模板、I/O、異常、預處理器、typeid、強制類型轉換和string類等。《C++語法詳解》層次分明,由淺入深,各章節相對獨立,語法示例短小精悍,方便對有疑惑的語法進行速查。學習完《C++語法詳解》,讀者不會再對C++的各種語法感到困惑。
《C++語法詳解》適合有一定C++基礎、對C++的語法有疑惑、想深入了解C++語法細節的人員閱讀。《C++語法詳解》同時也可以作為解決C++語法問題的參考書;對於學習過C++或已精通C++的人員,也是一本不錯的資料查閱手冊。
目錄
第1 章 C++快速入門 1
第2 章 整型、字元型和浮點型專題 6
2.1 基礎 6
2.2 整型和sizeof 操作符 8
2.3 char(字元型) 11
2.4 bool(布爾型) 16
2.5 浮點型 17
2.6 符號常量和#define 預處理指令簡介 22
第3 章 聲明、定義、複雜聲明和typedef 專題 23
3.1 聲明與定義 23
3.2 複雜聲明和typedef 的使用 31
3.2.1 複雜聲明 31
3.2.2 typedef 34
第4 章 運算符、表達式和左值專題 40
4.1 賦值、左值和右值 41
4.2 表達式和運算符 42
4.2.1 基礎 42
4.2.2 表達式的副作用和順序點 44
4.2.3 運算符的優先權、結合性和運算元的求值順序 45
4.2.4 運算符性質總結 46
4.3 運算符 47
4.3.1 二元算術運算符 47
4.3.2 關係運算符 49
4.3.3 邏輯運算符 50
4.3.4 賦值運算符 51
4.3.5 複合賦值運算符 52
4.3.6 遞增和遞減運算符 54
4.3.7 位運算符 56
4.3.8 條件運算符 58
4.3.9 逗號運算符 60
4.3.10 sizeof 運算符 61
4.4 類型轉換 61
4.4.1 基礎 61
4.4.2 各種類型轉換 61
4.4.3 轉換溢出處理 64
4.4.4 強制類型轉換運算符 65
第5 章 選擇語句和循環語句專題 68
5.1 語句概念 68
5.2 if 語句 69
5.3 switch 語句 72
5.4 while 和do-while 語句 77
5.5 for 語句 79
5.6 continue 和break 語句 81
5.7 循環語句頭定義的變數的作用域 82
5.8 goto 跳轉語句簡介 83
第6 章 指針和數組專題 84
6.1 指針 84
6.1.1 指針的概念 87
6.1.2 &與*運算符 88
6.1.3 指針(變數)的聲明、初始化 92
6.1.4 各種指針 93
6.1.5 指針的簡單運算 98
6.2 數組 100
6.2.1 一維數組 100
6.2.2 多維數組 104
6.3 指針與數組 106
6.3.1 理解數組名 106
6.3.2 指針與數組的混合運算 109
6.3.3 數組指針(*p)[]和指針數組*p[] 112
6.4 動態分配記憶體new 關鍵字 115
6.4.1 記憶體管理基礎 115
6.4.2 使用new 動態分配單個對象 116
6.4.3 使用new 動態創建數組 118
6.4.4 使用new 動態分配記憶體的類型分析 121
6.4.5 使用多級指針動態創建多維數組 122
6.4.6 delete 常見錯誤及記憶體錯誤 125
6.4.7 使用malloc/free 動態創建和釋放記憶體簡介 127
6.5 C 風格字元串 128
6.5.1 C 風格字元串 128
6.5.2 C 風格字元串的標準庫函式 131
6.5.3 C 風格字元串的輸入/輸出 132
第7 章 函式和標識符的作用域專題 133
7.1 函式基本語法規則. 133
7.1.1 函式聲明、定義及形參的語法規則 133
7.1.2 函式調用、實參、返回值、return 語句語法規則 137
7.2 函式參數傳遞 141
7.2.1 指針形參和引用形參 141
7.2.2 數組形參 144
7.2.3 函式指針 148
7.2.4 默認參數與可變形參 150
7.2.5 內聯函式、main 函式、extern"C"連結指示符 151
7.3 函式重載 154
7.4 函式匹配(或函式重載解析) 155
7.4.1 函式匹配的過程 155
7.4.2 候選函式的確定方法 156
7.4.3 確定最佳匹配函式的方法 156
7.4.4 完全匹配詳解 159
7.5 作用域、存儲持續期、連結性和存儲類區分符 164
7.5.1 作用域 164
7.5.2 存儲持續期、連結性與作用域 167
7.5.3 將程式寫在多個檔案中 175
第8 章 類基礎、類作用域及相關運算符專題 177
8.1 面向對象程式設計基本概念 177
8.2 類的聲明/定義、類成員簡介及相關運算符 181
8.2.1 類和對象的聲明、定義 181
8.2.2 類成員簡介、成員運算符、作用域解析運算符、訪問控制符 182
8.3 類作用域 187
8.3.1 類作用域中的名稱 187
8.3.2 類作用域中的名稱解析 189
第9 章 構造函式、複製構造函式和析構函式專題 192
9.1 構造函式與析構函式簡介 192
9.1.1 構造函式、默認構造函式、單形參構造函式、explicit 關鍵字 192
9.1.2 析構函式 195
9.2 對象初始化 198
9.2.1 使用構造函式、默認構造函式初始化對象 198
9.2.2 使用成員初始化表初始化數據成員 200
9.2.3 使用複製構造函式初始化對象及臨時對象 202
第10 章 名稱空間專題 207
10.1 名稱空間基礎 207
10.2 名稱空間的分類 209
10.3 訪問名稱空間中的名稱 211
10.4 名稱空間中的名稱解析 214
第11 章 類中的成員專題 217
11.1 靜態成員 217
11.1.1 靜態數據成員 217
11.1.2 靜態成員函式 221
11.2 const 成員、mutable 關鍵字、this 指針 222
11.3 對象數組、對象成員、數組成員和對象數組成員 225
11.3.1 對象數組 225
11.3.2 對象成員、數組成員和對象數組成員 226
11.4 嵌套類、局部類、友元. 228
11.4.1 嵌套類 228
11.4.2 局部類 232
11.4.3 友元 232
11.5 指向類成員的指針 237
11.6 枚舉、聯合(共用體)、位段(域) 240
11.6.1 枚舉類型 240
11.6.2 聯合(共用體)類型 244
11.6.3 位段(域) 246
第12 章 運算符(操作符)重載專題 249
12.1 運算符重載基本概念 249
12.2 運算符重載示例 252
12.3 轉換函式和重載解析 260
12.3.1 轉換函式 260
12.3.2 有轉換函式時的函式重載解析 263
12.3.3 帶有類類型實參和在類作用域中調用函式時函式重載解析 266
12.3.4 重載運算符函式時的重載解析 268
12.3.5 仿函式與重載解析 270
12.4 重載new/delete 運算符和定位new/delete 271
12.4.1 重載new/delete 運算符 271
12.4.2 定位(布局)new 和delete 277
12.4.3 new 表達式和new 運算符函式總結 282
第13 章 繼承、虛函式與多態性專題 284
13.1 繼承 284
13.1.1 繼承基礎及繼承後的訪問級別 284
13.1.2 繼承下的構造函式與複製控制 289
13.1.3 父類與子類間的轉換 291
13.1.4 繼承下的名稱解析、名稱隱藏及函式重載解析 294
13.1.5 多重繼承與虛基類 297
13.2 虛函式與多態性 302
13.2.1 多態性原理 302
13.2.2 虛函式 305
第14 章 對象模型與虛函式表專題 314
14.1 對象模型與虛函式表基礎、記憶體對齊、函式內部轉換 314
14.1.1 對象模型簡介 314
14.1.2 類成員的存儲次序與記憶體對齊 318
14.1.3 編譯器對函式的內部轉換與名稱改編 322
14.1.4 指向虛成員函式的指針 325
14.1.5 對成員函式的各種轉換總結 325
14.2 各種C++對象模型 326
14.2.1 指針與類型的關係 326
14.2.2 VC++ 2010 訪問虛函式表的三種方法 327
14.2.3 單繼承下的對象模型 330
14.2.4 多重繼承下的對象模型與this 指針調整 332
14.2.5 虛繼承下的對象模型 339
14.3 編譯器合成的各種構造函式和析構函式 342
14.3.1 編譯器合成的默認構造函式 342
14.3.2 編譯器合成的複製構造函式與按成員初始化 346
14.3.3 編譯器合成的複製賦值操作符函式 349
14.3.4 編譯器合成的析構函式 349
14.4 類對象創建和銷毀時編譯器實現原理 349
第15 章 模板專題 354
15.1 模板基礎 354
15.2 模板形參與模板實參詳解 359
15.2.1 類型形/實參與非類型形/實參 359
15.2.2 默認模板實參 363
15.2.3 模板模板形/實參 364
15.3 模板實參推演與顯式模板實參 365
15.3.1 基礎 365
15.3.2 模板實參推演 368
15.3.3 顯式模板實參 374
15.4 名稱的識別與依賴實參的查詢 375
15.4.1 依賴實參的查詢(ADL) 375
15.4.2 typename 前綴和template 前綴 380
15.5 實例化 383
15.5.1 實例化基本規則 384
15.5.2 實例化的時機和位置點及兩段式名稱查詢 384
15.5.3 顯式實例化 393
15.6 類模板中的成員 396
15.7 模板特化 401
15.7.1 全局特化與局部特化 401
15.7.2 類模板成員的特化及定義 406
15.8 有模板時的函式重載解析 410
15.9 模板與友元 416
15.9.1 基礎 416
15.9.2 把模板或其實例聲明為友元 417
15.10 模板與繼承 419
第16 章 I/O 專題 421
16.1 I/O 流模型及I/O 類組織結構 421
16.1.1 I/O 流模型 421
16.1.2 I/O 類組織結構 422
16.2 標準輸出流(ostream 類) 425
16.2.1 使用ostream 類的成員函式進行輸出 425
16.2.2 控制輸出時的格式 426
16.3 標準輸入流(istream 類) 432
16.3.1 流狀態 432
16.3.2 使用istream 類的成員函式進行輸入 434
16.4 檔案流 438
16.5 字元串流 445
16.6 C 風格字元串流 447
第17 章 異常專題 448
第18 章 預處理器、typeid 和強制類型轉換專題 464
第19 章 string 類專題 472
參考文獻 488