C++程式設計語言[本賈尼斯特朗斯特魯普的書]

《C++程式設計語言》是2010年3月機械工業出版社出版的圖書,作者是本賈尼、斯特朗斯特魯普(Bjarne Stroustrup)。該書是由C++語言的設計者編寫,對C++語言進行了最全面、最權威的論述,覆蓋標準C++以及由C++所支持的關鍵性編程技術和設計技術。

內容簡介

《C++程式設計語言(特別版·十周年中文紀念版)》一部在C++語言和程式設計領域具有深遠影響、暢銷不衰的著作,英文原版一經面世,即引起業內人士的高度評價和熱烈歡迎,先後被翻譯成德、希、匈、西、荷、法、日、俄、中、韓等近20種語言,數以百萬計的程式設計師從中獲益,是無可取代的C++經典力作。

在《C++程式設計語言(特別版·十周年中文紀念版)》英文原版面世10年後的今天,特別奉上十周年中文紀念版,希望眾多具有豐富實戰經驗的C++開發人員能夠溫故而知新,印證學習心得,了解更加本質的C++知識,讓獲得的理論套用得更加靈活,也期望新的C++程式設計師從中認識到這本書的價值所在,從更高的起點出發,書寫更加精彩的程式設計人生。

作者簡介

斯特朗斯特魯普(Bjarne Stroustrup),英國劍橋大學計算機科學博士,C++語言的設計者和最初的實現者,也是《C++程式設計原理與實踐》和《C++語言的設計和演化》的作者。他現在是德州農工大學計算機科學首席教授,同時不審AT&T貝爾實驗室特別成員。1993年,由於在C++領域的重大貢獻,他獲得了ACM的Grace Murray Hopper大獎並成為ACM院士;2008年,他又獲得了Dr.Dobb's雜誌的程式設計傑出獎。在進入學術界之前,他在AT&T貝爾實驗室工作。他是ISO C++標準委員會的創始人之一。

作品目錄

出版者的話

專家指導委員會

中文版序

譯者序

第2版序

第1版序

導 論

第1章 致讀者 3

1.1 本書的結構 3

1.1.1 例子和參考 4

1.1.2 練習 5

1.1.3 有關實現的註記 5

1.2 學習C++ 6

1.3 C++ 的設計 7

1.3.1 效率和結構 8

1.3.2 哲學註記 9

1.4 歷史註記 9

1.5 C++ 的使用 11

1.6 C和C++ 12

1.6.1 給C程式設計師的建議 13

1.6.2 給C++程式設計師的建議 13

1.7 有關在C++里編程的思考 14

1.8 忠告 15

1.9 參考文獻 16

第2章 C++概覽 19

2.1 為什麼是C++ 19

2.2 程式設計范型 19

2.3 過程式程式設計 20

2.3.1 變數和算術 21

2.3.2 檢測和循環 22

2.3.3 指針和數組 23

2.4 模組程式設計 23

2.4.1 分別編譯 24

2.4.2 異常處理 25

2.5 數據抽象 26

2.5.1 定義類型的模組 27

2.5.2 用戶定義類型 28

2.5.3 具體類型 29

2.5.4 抽象類型 31

2.5.5 虛函式 33

2.6 面向對象的程式設計 33

2.6.1 具體類型的問題 33

2.6.2 類層次結構 34

2.7 通用型程式設計 36

2.7.1 容器 36

2.7.2 通用型算法 37

2.8 附言 38

2.9 忠告 39

第3章 標準庫概覽 40

3.1 引言 40

3.2 Hello, world! 40

3.3 標準庫名字空間 41

3.4 輸出 41

3.5 字元串 42

3.5.1 C風格的字元串 44

3.6 輸入 44

3.7 容器 46

3.7.1 向量-vector 46

3.7.2 範圍檢查 47

3.7.3 表-list 48

3.7.4 映射-map 49

3.7.5 標準容器 49

3.8 算法 50

3.8.1 疊代器的使用 51

3.8.2 疊代器類型 52

3.8.3 疊代器和I/O 53

3.8.4 遍歷和謂詞 54

3.8.5 使用成員函式的算法 56

3.8.6 標準庫算法 56

3.9 數學 57

3.9.1 複數 57

3.9.2 向量算術 57

3.9.3 基本數值支持 58

3.10 標準庫功能 58

3.11 忠告 58

第一部分 基本功能

第4章 類型和聲明 63

4.1 類型 63

4.1.1 基本類型 64

4.2 布爾量 64

4.3 字元類型 65

4.3.1 字元文字量 66

4.4 整數類型 66

4.4.1 整數文字量 66

4.5 浮點類型 67

4.5.1 浮點文字量 67

4.6 大小 68

4.7 void 69

4.8 枚舉 69

4.9 聲明 71

4.9.1 聲明的結構 72

4.9.2 聲明多個名字 73

4.9.3 名字 73

4.9.4 作用域 74

4.9.5 初始化 75

4.9.6 對象和左值 76

4.9.7 typedef 76

4.10 忠告 77

4.11 練習 77

第5章 指針、數組和結構 79

5.1 指針 79

5.1.1 零 80

5.2 數組 80

5.2.1 數組初始化 80

5.2.2 字元串文字量 81

5.3 到數組的指針 83

5.3.1 在數組裡漫遊 83

5.4 常量 85

5.4.1 指針和常量 87

5.5 引用 88

5.6 指向void的指針 90

5.7 結構 91

5.7.1 類型等價 94

5.8 忠告 94

5.9 練習 94

第6章 表達式和語句 96

6.1 一個桌面計算器 96

6.1.1 分析器 96

6.1.2 輸入函式 100

6.1.3 低級輸入 102

6.1.4 錯誤處理 103

6.1.5 驅動程式 104

6.1.6 頭檔案 104

6.1.7 命令行參數 105

6.1.8 有關風格的註記 106

6.2 運算符概覽 107

6.2.1 結果 109

6.2.2 求值順序 110

6.2.3 運算符優先權 110

6.2.4 按位邏輯運算符 111

6.2.5 增量和減量 112

6.2.6 自由存儲 113

6.2.7 顯式類型轉換 116

6.2.8 構造函式 117

6.3 語句概覽 118

6.3.1 聲明作為語句 119

6.3.2 選擇語句 119

6.3.3 疊代語句 122

6.3.4 goto 123

6.4 注釋和縮進編排 123

6.5 忠告 125

6.6 練習 125

第7章 函式 128

7.1 函式聲明 128

7.1.1 函式定義 128

7.1.2 靜態變數 129

7.2 參數傳遞 130

7.2.1 數組參數 131

7.3 返回值 132

7.4 重載函式名 133

7.4.1 重載和返回類型 135

7.4.2 重載與作用域 135

7.4.3 手工的歧義性解析 135

7.4.4 多參數的解析 136

7.5 默認參數 137

7.6 未確定數目的參數 138

7.7 指向函式的指針 139

7.8 宏 143

7.8.1 條件編譯 145

7.9 忠告 145

7.10 練習 146

第8章 名字空間和異常 148

8.1 模組化和界面 148

8.2 名字空間 150

8.2.1 帶限定詞的名字 151

8.2.2 使用聲明 152

8.2.3 使用指令 153

8.2.4 多重界面 154

8.2.5 避免名字衝突 157

8.2.6 名字查找 159

8.2.7 名字空間別名 159

8.2.8 名字空間組合 160

8.2.9 名字空間和老代碼 163

8.3 異常 166

8.3.1 拋出和捕捉 167

8.3.2 異常的辨識 168

8.3.3 在計算器中的異常 169

8.4 忠告 173

8.5 練習 173

第9章 源檔案和程式 175

9.1 分別編譯 175

9.2 連線 176

9.2.1 頭檔案 178

9.2.2 標準庫頭檔案 179

9.2.3 單一定義規則 180

9.2.4 與非C++代碼的連線 182

9.2.5 連線與指向函式的指針 184

9.3 使用頭檔案 184

9.3.1 單一頭檔案 184

9.3.2 多個頭檔案 187

9.3.3 包含保護符 191

9.4 程式 192

9.4.1 非局部變數的初始化 192

9.5 忠告 194

9.6 練習 194

第二部分 抽象機制

第10章 類 199

10.1 引言 199

10.2 類 199

10.2.1 成員函式 200

10.2.2 訪問控制 201

10.2.3 構造函式 202

10.2.4 靜態成員 203

10.2.5 類對象的複製 204

10.2.6 常量成員函式 205

10.2.7 自引用 205

10.2.8 結構和類 208

10.2.9 在類內部的函式定義 210

10.3 高效的用戶定義類型 210

10.3.1 成員函式 212

10.3.2 協助函式 214

10.3.3 重載的運算符 215

10.3.4 具體類型的意義 215

10.4 對象 216

10.4.1 析構函式 216

10.4.2 默認構造函式 217

10.4.3 構造和析構 218

10.4.4 局部變數 218

10.4.5 自由存儲 220

10.4.6 類對象作為成員 221

10.4.7 數組 223

10.4.8 局部靜態存儲 224

10.4.9 非局部存儲 225

10.4.10 臨時對象 226

10.4.11 對象的放置 228

10.4.12 聯合 229

10.5 忠告 230

10.6 練習 230

第11章 運算符重載 233

11.1 引言 233

11.2 運算符函式 234

11.2.1 二元和一元運算符 235

11.2.2 運算符的預定義意義 236

11.2.3 運算符和用戶定義類型 236

11.2.4 名字空間裡的運算符 237

11.3 一個複數類型 238

11.3.1 成員運算符和非成員運算符 238

11.3.2 混合模式算術 239

11.3.3 初始化 240

11.3.4 複製 241

11.3.5 構造函式和轉換 242

11.3.6 文字量 243

11.3.7 另一些成員函式 243

11.3.8 協助函式 244

11.4 轉換運算符 245

11.4.1 歧義性 246

11.5 友元 248

11.5.1 友元的尋找 249

11.5.2 友元和成員 250

11.6 大型對象 251

11.7 基本運算符 253

11.7.1 顯式構造函式 253

11.8 下標 255

11.9 函式調用 256

11.10 間接 257

11.11 增量和減量 259

11.12 一個字元串類 260

11.13 忠告 265

11.14 練習 265

第12章 派生類 268

12.1 引言 268

12.2 派生類 269

12.2.1 成員函式 271

12.2.2 構造函式和析構函式 272

12.2.3 複製 273

12.2.4 類層次結構 273

12.2.5 類型域 274

12.2.6 虛函式 276

12.3 抽象類 278

12.4 類層次結構的設計 280

12.4.1 一個傳統的層次結構 280

12.4.2 抽象類 283

12.4.3 其他實現方式 285

12.4.4 對象創建的局部化 287

12.5 類層次結構和抽象類 289

12.6 忠告 289

12.7 練習 289

第13章 模板 292

13.1 引言 292

13.2 一個簡單的String模板 293

13.2.1 定義一個模板 294

13.2.2 模板實例化 295

13.2.3 模板參數 296

13.2.4 類型等價 296

13.2.5 類型檢查 297

13.3 函式模板 298

13.3.1 函式模板的參數 299

13.3.2 函式模板的重載 300

13.4 用模板參數描述策略 302

13.4.1 默認模板參數 303

13.5 專門化 304

13.5.1 專門化的順序 306

13.5.2 模板函式的專門化 307

13.6 派生和模板 308

13.6.1 參數化和繼承 309

13.6.2 成員模板 310

13.6.3 繼承關係 311

13.7 原始碼組織 312

13.8 忠告 314

13.9 練習 314

第14章 異常處理 316

14.1 錯誤處理 316

14.1.1 關於異常的其他觀點 318

14.2 異常的結組 318

14.2.1 派生的異常 319

14.2.2 多個異常的組合 321

14.3 捕捉異常 321

14.3.1 重新拋出 322

14.3.2 捕捉所有異常 322

14.4 資源管理 324

14.4.1 構造函式和析構函式的使用 325

14.4.2 auto_ptr 326

14.4.3 告誡 328

14.4.4 異常和new 328

14.4.5 資源耗盡 329

14.4.6 構造函數裡的異常 331

14.4.7 析構函數裡的異常 332

14.5 不是錯誤的異常 333

14.6 異常的描述 334

14.6.1 對異常描述的檢查 335

14.6.2 未預期的異常 336

14.6.3 異常的映射 336

14.7 未捕捉的異常 338

14.8 異常和效率 339

14.9 處理錯誤的其他方式 340

14.10 標準異常 342

14.11 忠告 344

14.12 練習 344

第15章 類層次結構 346

15.1 引言和概述 346

15.2 多重繼承 346

15.2.1 歧義性解析 348

15.2.2 繼承和使用聲明 349

15.2.3 重複的基類 350

15.2.4 虛基類 352

15.2.5 使用多重繼承 354

15.3 訪問控制 357

15.3.1 保護成員 359

15.3.2 對基類的訪問 360

15.4 運行時類型信息 361

15.4.1 dynamic_cast 363

15.4.2 在類層次結構中漫遊 365

15.4.3 類對象的構造與析構 367

15.4.4 typeid和擴展的類型信息 368

15.4.5 RTTI的使用和誤用 370

15.5 指向成員的指針 371

15.5.1 基類和派生類 373

15.6 自由存儲 374

15.6.1 數組分配 375

15.6.2 虛構造函式 376

15.7 忠告 377

15.8 練習 377

第三部分 標準庫

第16章 庫組織和容器 381

16.1 標準庫的設計 381

16.1.1 設計約束 382

16.1.2 標準庫組織 383

16.1.3 語言支持 385

16.2 容器設計 386

16.2.1 專門化的容器和疊代器 386

16.2.2 有基類的容器 388

16.2.3 STL容器 391

16.3 向量 392

16.3.1 類型 393

16.3.2 疊代器 394

16.3.3 元素訪問 395

16.3.4 構造函式 396

16.3.5 堆疊操作 399

16.3.6 表操作 401

16.3.7 元素定位 403

16.3.8 大小和容量 404

16.3.9 其他成員函式 406

16.3.10 協助函式 406

16.3.11 vector[bool] 407

16.4 忠告 407

16.5 練習 408

第17章 標準容器 409

第18章 算法和函式對象 449

第19章 疊代器和分配器 485

第20章 串 511

第21章 流 533

第22章 數值 578

第四部分 用C++ 做設計

第23章 開發和設計 607

第24章 設計和編程 635

第25章 類的作用 670

附錄和索引

附錄A 語法 695

附錄B 兼容性 713

附錄C 技術細節 724

附錄D 現場 759

附錄E 標準庫的異常時安全性 815

索引 845

相關詞條

熱門詞條

聯絡我們