出版社:機械工業出版社 ISBN:9787111539414 商品編碼:10496033894 品牌:文軒 出版時間:2016-06-01 代碼:139 作者:本賈尼·斯特勞斯特魯普(BjarneStro
"
作 者:(美)本賈尼·斯特勞斯特魯普(Bjarne Stroustrup) 著;王剛,楊巨峰 譯 著 定 價:139 出 版 社:機械工業出版社 出版日期:2016年06月01日 頁 數:726 裝 幀:平裝 ISBN:9787111539414 ●The C++ Programming Language, Fourth Edition 出版者的話 譯者序 前言 第3版前言 第2版前言 第1版前言 第一部分 引言 第1章 致讀者 2 1.1 本書結構 2 1.1.1 引言 2 1.1.2 基本特性 3 1.1.3 抽像機制 4 1.1.4 標準庫 5 1.1.5 例子和參考文獻 5 1.2 C++的設計 7 1.2.1 程序設計風格 8 1.2.2 類型檢查 11 1.2.3 C兼容性 12 1.2.4 語言、庫和繫統 12 1.3 學習C++ 14 1.3.1 用C++編程 15 1.3.2 對C++程序員的建議 16 1.3.3 對C程序員的建議 16 1.3.4 對Java程序員的建議 17 1.4 C++的歷史 18 1.4.1 大事年表 19 1.4.2 早期的C++ 19 1.4.3 1998標準 21 1.4.4 2011標準 23 1.4.5 C++的用途 26 1.5 建議 27 1.6 參考文獻 28 第2章 C++概覽:基礎知識 32 2.1 引言 32 2.2 基本概念 33 2.2.1 Hello,World! 33 2.2.2 類型、變量和算術運算 34 2.2.3 常量 36 2.2.4 檢驗和循環 37 2.2.5 指針、數組和循環 38 2.3 用戶自定義類型 40 2.3.1 結構 41 2.3.2 類 42 2.3.3 枚舉 43 2.4 模塊化 44 2.4.1 分離編譯 45 2.4.2 名字空間 46 2.4.3 錯誤處理 47 2.5 附記 50 2.6 建議 50 第3章 C++概覽:抽像機制 51 3.1 引言 51 3.2 類 51 3.2.1 具體類型 52 3.2.2 抽像類型 56 3.2.3 虛函數 58 3.2.4 類層次 59 3.3 拷貝和移動 62 3.3.1 拷貝容器 63 3.3.2 移動容器 64 3.3.3 資源管理 66 3.3.4 抑制操作 66 3.4 模板 67 3.4.1 參數化類型 67 3.4.2 函數模板 69 3.4.3 函數對像 69 3.4.4 可變參數模板 71 3.4.5 別名 72 3.5 建議 73 第4章 C++概覽:容器與算法 74 4.1 標準庫 74 4.1.1 標準庫概述 75 4.1.2 標準庫頭文件與名字空間 75 4.2 字符串 77 4.3 I/O流 78 4.3.1 輸出 78 4.3.2 輸入 79 4.3.3 用戶自定義類型的I/O 80 4.4 容器 81 4.4.1 vector 81 4.4.2 list 84 4.4.3 map 85 4.4.4 unordered_map 86 4.4.5 容器概述 86 4.5 算法 87 4.5.1 使用迭代器 88 4.5.2 迭代器類型 90 4.5.3 流迭代器 91 4.5.4 謂詞 93 4.5.5 算法概述 93 4.5.6 容器算法 94 4.6 建議 94 第5章 C++概覽:並發與實用功能 96 5.1 引言 96 5.2 資源管理 96 5.2.1 unique_ptr與shared_ptr 97 5.3 並發 99 5.3.1 任務和thread 99 5.3.2 傳遞參數 100 5.3.3 返回結果 100 5.3.4 共享數據 101 5.3.5 任務通信 103 5.4 小工具組件 106 5.4.1 時間 106 5.4.2 類型函數 107 5.4.3 pair和tuple 109 5.5 正則表達式 110 5.6 數學計算 111 5.6.1 數學函數和算法 111 5.6.2 復數 111 5.6.3 隨機數 112 5.6.4 向量算術 113 5.6.5 數值 113 5.7 建議 114 第二部分 基本功能 第6章 類型與聲明 116 6.1 ISO C++標準 116 6.1.1 實現 117 6.1.2 基本源程序字符集 118 6.2 類型 118 6.2.1 基本類型 119 6.2.2 布爾值 119 6.2.3 字符類型 121 6.2.4 整數類型 124 6.2.5 浮點數類型 126 6.2.6 前綴和後綴 127 6.2.7 void 128 6.2.8 類型尺寸 128 6.2.9 對齊 130 6.3 聲明 131 6.3.1 聲明的結構 133 6.3.2 聲明多個名字 134 6.3.3 名字 134 6.3.4 作用域 136 6.3.5 初始化 138 6.3.6 推斷類型:auto和decltype() 141 6.4 對像和值 144 6.4.1 左值和右值 144 6.4.2 對像的生命周期 145 6.5 類型別名 146 6.6 建議 147 第7章 指針、數組與引用 148 7.1 引言 148 7.2 指針 148 7.2.1 void* 149 7.2.2 nullptr 150 7.3 數組 150 7.3.1 數組的初始化器 152 7.3.2 字符串字面值常量 152 7.4 數組中的指針 155 7.4.1 數組漫遊 156 7.4.2 多維數組 158 7.4.3 傳遞數組 159 7.5 指針與const 161 7.6 指針與所有權 163 7.7 引用 163 7.7.1 左值引用 164 7.7.2 右值引用 167 7.7.3 引用的引用 169 7.7.4 指針與引用 170 7.8 建議 172 第8章 結構、聯合與枚舉 173 8.1 引言 173 8.2 結構 173 8.2.1 struct的布局 175 8.2.2 struct的名字 176 8.2.3 結構與類 177 8.2.4 結構與數組 178 8.2.5 類型等價 180 8.2.6 普通舊數據 180 8.2.7 域 182 8.3 聯合 183 8.3.1 聯合與類 185 8.3.2 匿名union 186 8.4 枚舉 188 8.4.1 enum class 188 8.4.2 普通的enum 191 8.4.3 未命名的enum 192 8.5 建議 193 第9章 語句 194 9.1 引言 194 9.2 語句概述 194 9.3 聲明作為語句 195 9.4 選擇語句 196 9.4.1 if語句 196 9.4.2 switch語句 198 9.4.3 條件中的聲明 200 9.5 循環語句 201 9.5.1 範圍for語句 201 9.5.2 for語句 202 9.5.3 while語句 203 9.5.4 do語句 203 9.5.5 退出循環 204 9.6 goto語句 204 9.7 注釋與縮進 205 9.8 建議 207 第10章 表達式 208 10.1 引言 208 10.2 一個桌面計算器示例 208 10.2.1 分析器 209 10.2.2 輸入 213 10.2.3 底層輸入 216 10.2.4 錯誤處理 217 10.2.5 驅動程序 217 10.2.6 頭文件 218 10.2.7 命令行參數 218 10.2.8 關於風格 220 10.3 運算符概述 220 10.3.1 結果 224 10.3.2 求值順序 224 10.3.3 運算符優先級 225 10.3.4 臨時對像 226 10.4 常量表達式 227 10.4.1 符號化常量 229 10.4.2 常量表達式中的const 229 10.4.3 字面值常量類型 229 10.4.4 引用參數 230 10.4.5 地址常量表達式 231 10.5 隱式類型轉換 231 10.5.1 提升 231 10.5.2 類型轉換 232 10.5.3 常用的算術類型轉換 234 10.6 建議 235 第11章 選擇適當的操作 236 11.1 其他運算符 236 11.1.1 邏輯運算符 236 11.1.2 位邏輯運算符 236 11.1.3 條件表達式 238 11.1.4 遞增與遞減 238 11.2 自由存儲 240 11.2.1 內存管理 241 11.2.2 數組 243 11.2.3 獲取內存空間 244 11.2.4 重載new 245 11.3 列表 247 11.3.1 實現模型 248 11.3.2 限定列表 249 11.3.3 未限定列表 249 11.4 lambda表達式 251 11.4.1 實現模型 251 11.4.2 lambda的替代品 252 11.4.3 捕獲 254 11.4.4 調用與返回 257 11.4.5 lambda的類型 257 11.5 顯式類型轉換 258 11.5.1 構造 259 11.5.2 命名轉換 261 11.5.3 C風格的轉換 262 11.5.4 函數形式的轉換 262 11.6 建議 263 第12章 函數 264 12.1 函數聲明 264 12.1.1 為什麼使用函數 265 12.1.2 函數聲明的組成要件 265 12.1.3 函數定義 266 12.1.4 返回值 267 12.1.5 inline函數 269 12.1.6 constexpr函數 269 12.1.7 [[noreturn]]函數 271 12.1.8 局部變量 272 12.2 參數傳遞 273 12.2.1 引用參數 273 12.2.2 數組參數 275 12.2.3 列表參數 277 12.2.4 數量未定的參數 278 12.2.5 默認參數 281 12.3 重載函數 282 12.3.1 自動重載解析 283 12.3.2 重載與返回類型 284 12.3.3 重載與作用域 285 12.3.4 多實參解析 285 12.3.5 手動重載解析 286 12.4 前置與後置條件 286 12.5 函數指針 288 12.6 宏 292 12.6.1 條件編譯 294 12.6.2 預定義宏 295 12.6.3 編譯指令 296 12.7 建議 296 第13章 異常處理 297 13.1 錯誤處理 297 13.1.1 異常 298 13.1.2 傳統的錯誤處理 299 13.1.3 漸進決策 300 13.1.4 另一種視角看異常 301 13.1.5 何時不應使用異常 302 13.1.6 層次化錯誤處理 303 13.1.7 異常與效率 304 13.2 異常保障 305 13.3 資源管理 307 13.3.1 finally 310 13.4 強制不變式 311 13.5 拋出與捕獲異常 315 13.5.1 拋出異常 315 13.5.2 捕獲異常 318 13.5.3 異常與線程 324 13.6 vector的實現 324 13.6.1 一個簡單的vector 325 13.6.2 顯式地表示內存 328 13.6.3 賦值 331 13.6.4 改變尺寸 332 13.7 建議 335 第14章 名字空間 337 14.1 組合問題 337 14.2 名字空間 338 14.2.1 顯式限定 339 14.2.2 using聲明 340 14.2.3 using指示 341 14.2.4 參數依賴查找 342 14.2.5 名字空間是開放的 344 14.3 模塊化和接口 345 14.3.1 名字空間作為模塊 346 14.3.2 實現 348 14.3.3 接口和名字 349 14.4 組合使用名字空間 351 14.4.1 便利性與安全性 351 14.4.2 名字空間別名 352 14.4.3 組合名字空間 352 14.4.4 組合與選擇 353 14.4.5 名字空間和重載 354 14.4.6 版本控制 356 14.4.7 名字空間嵌套 358 14.4.8 無名名字空間 359 14.4.9 C頭文件 359 14.5 建議 360 第15章 源文件與程序 362 15.1 分離編譯 362 15.2 鏈接 363 15.2.1 文件內名字 365 15.2.2 頭文件 366 15.2.3 單一定義規則 368 15.2.4 標準庫頭文件 369 15.2.5 鏈接非C++代碼 370 15.2.6 鏈接和函數指針 372 15.3 使用頭文件 373 15.3.1 單頭文件組織 373 15.3.2 多頭文件組織 376 15.3.3 包含保護 380 15.4 程序 381 15.4.1 非局部變量初始化 381 15.4.2 初始化和並發 382 15.4.3 程序終止 383 15.5 建議 384 第三部分 抽像機制 第16章 類 386 16.1 引言 386 16.2 類基礎 387 16.2.1 成員函數 388 16.2.2 默認拷貝 389 16.2.3 訪問控制 389 16.2.4 class和struct 390 16.2.5 構造函數 391 16.2.6 explicit構造函數 393 16.2.7 類內初始化器 395 16.2.8 類內函數定義 395 16.2.9 可變性 396 16.2.10 自引用 399 16.2.11 成員訪問 400 16.2.12 static成員 401 16.2.13 成員類型 403 16.3 具體類 403 16.3.1 成員函數 406 16.3.2 輔助函數 408 16.3.3 重載運算符 410 16.3.4 具體類的重要性 410 16.4 建議 411 第17章 構造、清理、拷貝和移動 413 17.1 引言 413 17.2 構造函數和析構函數 415 17.2.1 構造函數和不變式 415 17.2.2 析構函數和資源 416 17.2.3 基類和成員析構函數 417 17.2.4 調用構造函數和析構函數 418 17.2.5 virtual析構函數 419 17.3 類對像初始化 420 17.3.1 不使用構造函數進行初始化 420 17.3.2 使用構造函數進行初始化 421 17.3.3 默認構造函數 424 17.3.4 初始化器列表構造函數 425 17.4 成員和基類初始化 429 17.4.1 成員初始化 429 17.4.2 基類初始化器 431 17.4.3 委托構造函數 431 17.4.4 類內初始化器 432 17.4.5 static成員初始化 434 17.5 拷貝和移動 435 17.5.1 拷貝 435 17.5.2 移動 441 17.6 生成默認操作 444 17.6.1 顯式聲明默認操作 444 17.6.2 默認操作 445 17.6.3 使用默認操作 446 17.6.4 使用delete刪除的函數 449 17.7 建議 451 第18章 運算符重載 452 18.1 引言 452 18.2 運算符函數 453 18.2運算符 454 18.2.2 運算符的預置含義 455 18.2.3 運算符與用戶自定義類型 456 18.2.4 傳遞對像 456 18.2.5 名字空間中的運算符 457 18.3 復數類型 459 18.3.1 成員和非成員運算符 459 18.3.2 混合模式運算 460 18.3.3 類型轉換 461 18.3.4 字面值常量 463 18.3.5 訪問函數 464 18.3.6 輔助函數 465 18.4 類型轉換 466 18.4.1 類型轉換運算符 466 18.4.2 explicit類型轉換運算符 467 18.4.3 二義性 468 18.5 建議 469 第19章 特殊運算符 471 19.1 引言 471 19.2 特殊運算符 471 19.2.1 取下標 471 19.2.2 函數調用 472 19.2.3 解引用 473 19.2.4 遞增和遞減 475 19.2.5 分配和釋放 477 19.2.6 用戶自定義字面值常量 478 19.3 字符串類 481 19.3.1 推薦操作 481 19.3.2 訪問字符 482 19.3.3 類的表示 483 19.3.4 成員函數 485 19.3.5 輔助函數 487 19.3.6 應用String 489 19. 490 19.4.1 491 19.4.與成員 492 19.5 建議 493 第20章 派生類 495 20.1 引言 495 20.2 派生類 496 20.2.1 成員函數 498 20.2.2 構造函數和析構函數 499 20.3 類層次 500 20.3.1 類型域 500 20.3.2 虛函數 502 20.3.3 顯式限定 504 20.3.4 覆蓋控制 505 20.3.5 using基類成員 508 20.3.6 返回類型放松 511 20.4 抽像類 512 20.5 訪問控制 514 20.5.1 protected成員 517 20.5.2 訪問基類 518 20.5.3 using聲明與訪問控制 519 20.6 成員指針 520 20.6.1 函數成員指針 520 20.6.2 數據成員指針 522 20.6.3 基類和派生類成員 523 20.7 建議 523 第21章 類層次 524 21.1 引言 524 21.2 設計類層次 524 21.2.1 實現繼承 525 21.2.2 接口繼承 527 21.2.3 替代實現方式 529 21.2.4 定位對像創建 532 21.3 多重繼承 533 21.3.1 多重接口 533 21.3.2 多重實現類 533 21.3.3 二義性解析 535 21.3.4 重復使用基類 538 21.3.5 虛基類 539 21.3.6 重復基類與虛基類 544 21.4 建議 546 第22章 運行時類型信息 547 22.1 引言 547 22.2 類層次導航 547 22.2.1 dynamic_cast 548 22.2.2 多重繼承 551 22.2.3 static_cast和dynamic_cast 552 22.2.4 恢復接口 553 22.3 雙重分發和訪客 557 22.3.1 雙重分發 557 22.3.2 訪客 559 22.4 構造和析構 561 22.5 類型識別 561 22.5.1 擴展類型信息 563 22.6 RTTI的使用和誤用 564 22.7 建議 565 第23章 模板 566 23.1 引言和概述 566 23.2 一個簡單的字符串模板 568 23.2.1 定義模板 569 23.2.2 模板實例化 571 23.3 類型檢查 571 23.3.1 類型等價 572 23.3.2 錯誤檢測 573 23.4 類模板成員 574 23.4.1 數據成員 574 23.4.2 成員函數 575 23.4.3 成員類型別名 575 23.4.4 static成員 575 23.4.5 成員類型 576 23.4.6 成員模板 577 23.4. 580 23.5 函數模板 582 23.5.1 函數模板實參 583 23.5.2 函數模板實參推斷 584 23.5.3 函數模板重載 586 23.6 模板別名 590 23.7 源碼組織 591 23.7.1 鏈接 593 23.8 建議 594 第24章 泛型程序設計 595 24.1 引言 595 24.2 算法和提升 596 24.3 概念 599 24.3.1 發現概念 599 24.3.2 概念和約束 602 24.4 具體化概念 604 24.4.1 公理 607 24.4.2 多實參概念 607 24.4.3 值概念 608 24.4.4 約束檢查 609 24.4.5 模板定義檢查 610 24.5 建議 612 第25章 特例化 613 25.1 引言 613 25.2 模板參數和實參 614 25.2.1 類型作為實參 614 25.2.2 值作為實參 615 25.2.3 操作作為實參 616 25.2.4 模板作為實參 618 25.2.5 默認模板實參 619 25.3 特例化 621 25.3.1 接口特例化 623 25.3.2 主模板 624 25.3.3 特例化順序 625 25.3.4 函數模板特例化 626 25.4 建議 628 第26章 實例化 629 26.1 引言 629 26.2 模板實例化 630 26.2.1 何時需要實例化 630 26.2.2 手工控制實例化 631 26.3 名字綁定 632 26.3.1 依賴性名字 633 26.3.2 定義點綁定 635 26.3.3 實例化點綁定 636 26.3.4 多實例化點 638 26.3.5 模板和名字空間 639 26.3.6 過於激進的ADL 639 26.3.7 來自基類的名字 641 26.4 建議 643 第27章 模板和類層次 645 27.1 引言 645 27.2 參數化和類層次 646 27.2.1 生成類型 647 27.2.2 模板類型轉換 649 27.3 類模板層次 650 27.3.1 模板作為接口 651 27.4 模板參數作為基類 652 27.4.1 組合數據結構 652 27.4.2 線性化類層次 655 27.5 建議 660 第2編程 661 28.1 引言 661 28.2 類型函數 663 28.2.1 類型別名 665 28.2.2 類型謂詞 666 28.2.3 選擇函數 668 28.2.4 萃取 668 28.3 控制結構 670 28.3.1 選擇 670 28.3.2 迭代和遞歸 673 28.3.3 何編程 674 28.4 條件定義:Enable_if 675 28.4.1 使用Enable_if 676 28.4.2 實現Enable_if 678 28.4.3 Enable_if與概念 678 28.4.4 更多Enable_if例子 679 28.5 一個編譯時列表:Tuple 681 28.5.1 一個簡單的輸出函數 683 28.5素訪問 684 28.5.3 make_tuple 686 28.6 可變參數模板 686 28.6.1 一個類型安全的printf() 687 28.6.2 技術細節 689 28.6.3 轉發 691 28.6.4 標準庫tuple 692 28.7 國際標準單位例子 694 28.7.1 Unit 695 28.7.2 Quantity 696 28.7.3 Unit字面值常量 697 28.7.4 工具函數 698 28.8 建議 700 第29章 一個矩陣設計 701 29.1 引言 701 29.1.1 Matrix的基本使用 701 29.1.2 對Matrix的要求 703 29.2 Matrix模板 704 29.2.1 構造和賦值 705 29.2.2 下標和切片 706 29.3 Matrix算術運算 708 29.3.1 標量運算 709 29.3.2 加法 710 29.3.3 乘法 711 29.4 Matrix實現 712 29.4.1 slice() 713 29.4.2 Matrix切片 713 29.4.3 Matrix_ref 714 29.4.4 Matrix列表初始化 715 29.4.5 Matrix訪問 717 29.4.6 零維Matrix 719 29.5 求解線性方程組 720 29.5.1 經典高斯消去法 721 29.5.2 旋轉 722 29.5.3 測試 723 29.5.4 熔合運算 723 29.6 建議 725 《C++程序設計語言》(原書第4版)是C++領域最經典的參考書,介紹了C++11的各項新特性和新功能。全書共分四部分。第一部分(第1~5章)是引言,包括C++的背景知識,C++語言及其標準庫的簡要介紹;第二部分(第6~15章)介紹C++的內置類型和基本特性,以及如何用它們構造程序;第三部分(第16~29章)介紹C++的抽像機制及如何用這些機制編寫面向對像程序和泛型程序;第四部分(第30~44章)概述標準庫並討論一些兼容性問題。由於篇幅問題,原書中文版分兩冊出版,分別對應原書的第一至三部分和第四部分。這一冊為第一至三部分。 (美)本賈尼·斯特勞斯特魯普(Bjarne Stroustrup) 著;王剛,楊巨峰 譯 著 本賈尼·斯特勞斯特魯普(Bjarne Stroustrup),C++語言的設計者和最初實現者,C++語言ISO標準化工作的積極參與者,同時也是《C++程序設計語言》和《C++程序設計原理與實踐》的作者。他是英國劍橋大學計算機科學專業博士,1 979年加入美國新澤西貝爾實驗室,從成立到2002年一直擔任貝爾實驗室大規模程序設計研究部門的負責人。2002年至2014年,Bjarne被評為德州農工大學工程學院計算機科學首席教授,哥倫比亞大學計算機科學繫客座教授,德州農工大學計算機科學繫傑出研究教授。多年來,他為劍橋大學、哥倫比亞大學和普林斯頓大學等知名學府的計算機科學教學事業傾注了大量的熱情和精力。等
" |