| | | C++面向對像高效編程(第2版C和C++實務精選) | 該商品所屬分類:計算機/網絡 -> 程序設計 | 【市場價】 | 1107-1604元 | 【優惠價】 | 692-1003元 | 【介質】 | book | 【ISBN】 | 9787115329349 | 【折扣說明】 | 一次購物滿999元台幣免運費+贈品 一次購物滿2000元台幣95折+免運費+贈品 一次購物滿3000元台幣92折+免運費+贈品 一次購物滿4000元台幣88折+免運費+贈品
| 【本期贈品】 | ①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
| |
版本 | 正版全新電子版PDF檔 | 您已选择: | 正版全新 | 溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。*. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。 *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。 *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。 | | | | 內容介紹 | |
-
出版社:人民郵電
-
ISBN:9787115329349
-
作者:(美)達特特裡|譯者:葉塵
-
頁數:757
-
出版日期:2013-10-01
-
印刷日期:2013-10-01
-
包裝:平裝
-
開本:16開
-
版次:1
-
印次:1
-
字數:1156千字
-
達特特裡著的《C++面向對像高效編程(第2版C和C++實務精選)》的所有內容都是經驗之談。書中的練習都建立在Kayshav多年的C+++經驗基礎上。Kayshav不僅詳盡地解釋了面向對像的概念以及從理論上介紹C++的語言特性,還介紹了繼承、mixin類、模板類和異常這些方面的實踐經驗,探討了模板實例化、共享庫、線程安全性和許多其他問題。
-
達特特裡著的《C++面向對像高效編程(第2版C和
C++實務精選)》以幫助讀者掌握C++面向對像高效編
程範式為目的,詳細介紹了C++編程中的各種概念和
應用技巧。全書共分為兩部分,第一部分(第1章至第
10章)介紹面向對像編程的基礎和應用,如數據抽像
、繼承、泛型類型、異常處理等內容;第二部分(第
11章至第13章)深入探討如何建立抽像及其策略,並
研究了C++對像模型。書中包含大量的代碼實例,讀
者不僅能從理論上得以提高,而且還能輕松地在實踐
中應用。
《C++面向對像高效編程(第2版C和C++實務精選)
》適用於C++程序員,也可供對面向對像程序設計感
興趣的編程人員及大專院校計算機專業師生參考。
-
**部分 概念、實踐和應用 第1章 什麼是面向對像編程 1 1.1 背景 1 1.1.1 面向過程編程示例 2 1.1.2 銀行賬戶的表示 3 1.1.3 銀行賬戶的安全 4 1.1.4 用面向對像編程解決問題 5 1.2 理解對像模型 7 1.3 術語 8 1.4 理解消息、方法和實例變量 8 1.4.1 對像中包含的內容 9 1.4.2 實例化(或創建)對像 11 1.5 什麼可以作為類 11 1.6 什麼不是類 12 1.7 類的目的 13 1.8 深入了解對像 15 1.8.1 對像的狀態 15 1.8.2 對像狀態的重要性 15 1.8.3 誰控制對像的狀態 17 1.8.4 對像的行為 18 1.9 面向對像軟件開發的階段 18 1.9.1 面向對像分析(OOA) 18 1.9.2 面向對像設計(OOD) 20 1.10 面向對像編程(OOP) 21 1.11 對像模型的關鍵要素 21 1.12 OOP範式和語言 24 1.13 面向對像編程語言的要求 24 1.14 對像模型的優點 25 1.15 小結 26 第2章 什麼是數據抽像 27 2.1 接口和實現的分離 30 2.2 對像接口的重要性 31 2.3 實現的含義 32 2.4 保護實現 32 2.5 數據封裝的優點 34 2.6 接口、實現和數據封裝之間的關繫 35 2.7 數據封裝注意事項 36 2.8 確定封裝的內容 36 2.9 抽像數據類型 37 2.10 抽像數據類型——棧的實現 38 2.11 C++中的數據抽像 40 2.12 類中的訪問區域 41 2.13 和類一起使用的術語 47 2.14 類的實現者 48 2.15 實現成員函數 49 2.16 識別成員函數的目標對像 49 2.17 程序示例 52 2.18 對像是重點 53 2.19 對接口的再認識 53 2.20 什麼是多線程安全類 55 2.21 確保抽像的可靠性——類不變式和斷言 57 2.21.1 類不變式 57 2.21.2 前置條件和後置條件 57 2.21.3 使用斷言實現不變式和條件 59 2.21.4 高效使用斷言 60 2.22 面向對像設計的表示法 60 2.23 Booch表示法 61 2.24 Booch中類的關繫 61 2.24.1 關聯 62 2.24.2 聚集(has-a) 62 2.24.3 “使用”關繫 65 2.24.4 繼承關繫(is-a) 66 2.24.5 類範疇 66 2.25 統一建模語言(UML) 67 2.26 UML中類的關繫 68 2.27 關聯 69 2.27.1 作為聚集的關聯 71 2.27.2 OR關聯 72 2.28 組合 72 2.29 泛化關繫(is-a) 74 2.30 has-a關繫的重要性 75 2.31 小結 76 第3章 C++與數據抽像 77 3.1 類概念的基礎 77 3.2 類要素的細節 78 3.2.1 訪問區域 78 3.2.2 分析 79 3.3 復制構造函數 81 3.4 賦值操作符 89 3.5 this指針和名稱重整的進一步說明 95 3.6 const成員函數的概念 98 3.7 編譯器如何實現const成員函數 99 3.8 C++中類和結構的區別 100 3.9 類可以包含什麼 100 3.10 設計期間的重點——類的接口 101 3.11 類名、成員函數名、參數類型和文檔 102 3.12 參數傳遞模式——客戶的角度 103 3.13 采用語義 106 3.14 為參數選擇正確的模式 108 3.15 函數返回值 109 3.16 從函數中返回引用 111 3.17 編寫內存安全類 112 3.18 客戶對類和函數的責任 113 3.19 小結 114 第4章 OOP中的初始化和無用單元收集 115 4.1 什麼是初始化 115 4.1.1 使用構造函數初始化 117 4.1.2 使用內嵌對像必須遵守的規則 124 4.2 無用單元收集問題 125 4.2.1 無用單元 125 4.2.2 懸掛引用 125 4.2.3 無用單元收集和懸掛引用的補救 126 4.2.4 無用單元收集和語言設計 127 4.2.5 在C++中何時產生無用單元 129 4.2.6 對像何時獲得資源 130 4.3 C++中的無用單元收集 130 4.4 對像的標識 132 4.5 對像復制的語義 136 4.6 對像賦值的語義 142 4.7 對像相等的語義 145 4.8 為什麼需要副本控制 149 4.8.1 信號量示例 150 4.8.2 許可證服務器示例 152 4.8.3 字符串類示例 154 4.9 分析 160 4.10 “寫時復制”的概念 161 4.10.1 何時使用引用計數 167 4.10.2 “寫時復制”小結 168 4.11 類和類型 169 4.12 小結 170 第5章 繼承的概念 171 5.1 繼承的基本知識 172 5.2 is-a關繫的含義 186 5.3 繼承關繫的效果 187 5.4 多態置換原則 187 5.5 用繼承擴展類層次 195 5.6 繼承的一些基本優點 197 5.7 動態綁定、虛函數和多態性 198 5.7.1 動態綁定含義 201 5.7.2 動態綁定的支持——虛函數 202 5.8 繼承對數據封裝的影響 204 5.9 多態的含義 206 5.10 有效使用虛函數(動態綁定) 207 5.11 虛析構函數的要求 210 5.12 構造函數和虛函數 214 5.13 一般—特殊的概念 215 5.14 抽像(延期)類的概念 215 5.15 抽像類的用途 219 5.16 強大的繼承 232 5.17 有效的代碼復用 233 5.18 抽像基類的客戶 236 5.19 繼承優點小結 237 5.20 繼承和動態綁定的危險 238 5.20.1 C++如何實現動態綁定(虛函數) 240 5.20.2 虛函數的開銷 240 5.20.3 動態綁定和類型檢查 241 5.21 不必要的繼承和動態綁定 242 5.22 使用虛函數的不同模式 254 5.23 小結 256 第6章 多重繼承概念 257 6.1 多重繼承的簡單定義 258 6.2 大學示例 258 6.3 多重繼承關繫的含義 264 6.4 多重繼承場景 265 6.4.1 C++中解決名稱衝突 266 6.4.2 二義性基類問題 270 6.5 多重繼承的基本優點 271 6.6 多重繼承的替換方案 271 6.6.1 **種替換方案 272 6.6.2 第二種替換方案 274 6.7 重復繼承 276 6.8 重復繼承的解決方案 279 6.8.1 在C++中通過虛基類共享對像 279 6.8.2 虛基類的優點 282 6.8.3 虛基類產生的新問題 282 6.8.4 比較Eiffel和C++中的多重繼承 287 6.9 繼承的一般問題 290 6.10 使用mixin類加入靜態功能 291 6.10.1 mixin類的定義 291 6.10.2 何時使用mixin類 296 6.11 動態變化情況的設計 296 6.11.1 角色扮演類的設計靈活性 302 6.11.2 如何使用角色扮演類 302 6.11.3 管理角色的另一種方法 311 6.11.4 TUniversityMember類對像的多態用法 312 6.11.5 按要求改動現有類 313 6.11.6 mixin類和角色對像的比較——適用範圍 314 6.12 C++的私有派生 316 6.12.1 何時使用私有派生 319 6.12.2 重新導出私有基類的成員 321 6.12.3 私有派生的替換方法——包含 323 6.12.4 需要使用私有派生的情況 324 6.13 mixin類和私有派生的實用示例 327 6.14 繼承與包含 333 6.15 小結 334 第7章 從類中選擇性導出(友元函數) 336 7.1 需要什麼 337 7.2 C++的情況 337 7.3 友元關繫的含義 340 7.4 非成員函數和友元函數的應用 343 7.4.1 實例1:盡量減少類之間過多的交互 343 7.4.2 實例2:克服語法問題 349 7.4.3 實例3:需要和多個類進行通信的函數 361 7.5 非成員函數的優點 362 7.6 選擇友元函數還是成員函數 365 7.7 小結 366 第8章 操作符重載的概念 367 8.1 語言類型和程序員定義類型的區別 367 8.2 什麼是重載操作符 370 8.3 操作符重載的優點和缺點 371 8.3.1 *加簡潔的抽像數據類型 372 8.3.2 令人費解的操作符重載 372 8.3.3 無法理解優先級和結合規則 373 8.4 C++中的重載操作符 376 8.5 ++和--操作符的另一個應用 380 8.6 *復雜的操作符——成員訪問操作符:- 387 8.7 非成員函數的操作符 395 8.7.1 作為成員函數的操作符 396 8.7.2 作為非成員函數實現的操作符 398 8.7.3 為什麼需要轉換 402 8.8 轉換函數 402 8.8.1 轉換構造函數和轉換函數之間的相互影響 405 8.8.2 消除對臨時對像的需求 409 8.9 從操作符函數返回結果 411 8.10 賦值操作符 415 8.11 小結 415 第9章 泛型類型 417 9.1 重復性編碼問題 417 9.2 智能解決方案——泛型編程 424 9.3 泛型類型(類)的基本知識 427 9.4 泛型類型和代碼重復 433 9.5 泛型類實現者與客戶之間的契約 434 9.5.1 這是否是良好的設計 439 9.5.2 泛型類實現中的操作符和成員函數 441 9.5.3 替換解決方案——泛型類的特殊化 443 9.6 模板特殊化 444 9.6.1 模板成員函數的特殊化 444 9.6.2 另一種替換方案:分離對像的比較 446 9.6.3 不能隨意停用模板類的原因 448 9.7 模板類特殊化 449 9.8 泛型函數的概念 451 9.9 C++中模板類和成員函數的實例化 455 9.10 泛型類型和類型檢查 462 9.11 約束泛型和無約束泛型 463 9.11.1 C++中對模板參數的約束 467 9.11.2 C++中模板參數的特定類型 468 9.11.3 模板參數的默認值 469 9.12 C++中對模板參數執行約束 470 9.13 泛型類和選擇性導出 473 9.14 繼承和泛型類 476 9.15 泛型類繼承的用途 483 9.16 控制對像創建的一般技巧 485 9.17 實現計數指針 487 9.18 盡量減少模板對像的代碼重復 496 9.18.1 程序的內存占用 498 9.18.2 減少模板代碼的方案 498 9.19 模板類和源代碼保護 510 9.20 共享(動態)庫中的模板類 510 9.20.1 共享庫中的模板類——多實例問題 513 9.20.2 消除共享庫中的多個實例 515 9.20.3 和現有共享庫鏈接 516 9.20.4 容器類 517 9.21 泛型類和繼承的比較 518 9.22 小結 519 **0章 處理異常情況 520 10.1 處理錯誤狀況的原因 520 10.2 錯誤碼的替換方案 522 10.3 C++異常處理模型 523 10.3.1 C++異常機制的工作方式 524 10.3.2 try塊的重要性 526 10.3.3 throw表達式的重要性 526 10.3.4 理解動態調用鏈 528 10.3.5 處理多個異常 530 10.3.6 catch塊的責任 531 10.4 Eiffel中的異常模型 532 10.5 Eiffel和C++異常模型的優缺點 536 10.6 有效地使用C++異常 538 10.7 創建異常層次 538 10.7.1 catch處理代碼的順序 541 10.7.2 編寫異常安全函數 543 10.8 項目中的異常處理架構 545 10.9 項目中錯誤管理的成功策略 547 10.9.1 函數不是防火牆 549 10.9.2 設計異常層次 549 10.10 異常環境中的資源管理 552 10.10.1 自動資源管理 553 10.10.2 泛化資源管理解決方案 556 10.11 異常和構造函數 558 10.11.1 從函數中返回安全資源 558 10.11.2 管理對像數組的輔助類 562 10.11.3 自動無用單元收集的開銷 567 10.12 構造函數的部分完成 568 10.13 使用異常創建安全數組 568 10.14 小結 574 第二部分 構建強大的面向對像軟件 **1章 掌握數據抽像 575 11.1 隱藏抽像的實現細節 575 11.1.1 使用句柄的優點 579 11.1.2 使用句柄的缺點 579 11.2 將指針作為數據成員使用(惰性求值) 584 11.3 控制對像創建 586 11.3.1 隻允許使用new()操作符創建對像 586 11.3.2 防止使用new()操作符創建對像 589 11.4 使用指針和引用代替內嵌對像 589 11.5 避免用大型數組作為自動變量(或數據成員) 590 11.6 使用對像數組和對像指針數組 591 11.7 用對像代替基本類型指針作為數據成員和成員函數的返回值 593 11.8 與C的兼容性 596 11.9 合理選擇實現:對像大小和代碼效率 598 11.10 避免臨時對像 601 11.11 使用復制構造函數初始化對像 602 11.12 有效使用代理對像 603 11.12.1 代理對像有助於安全共享對像 604 11.12.2 代理對像易於使用 605 11.12.3 代理對像是遠程對像的替身 606 11.12.4 智能代理對像提供額外的功能 607 11.12.5 代理對像解決語法/語義的問題 608 11.12.6 泛型下標代理技術 611 11.13 使用簡單的抽像建立*復雜的抽像 613 11.14 抽像必須允許客戶以不同的方式使用類 614 11.15 小結 616 **2章 高效使用繼承 617 12.1 用繼承實現簡潔的菜單和命令 617 12.2 封裝創建對像的細節 624 12.3 虛構造函數的概念 626 12.4 為協議控制而組合使用虛函數和非虛函數 629 12.5 雙分派概念 638 12.6 設計和實現容器類 645 12.7 設計可處理不同類型的容器 647 12.8 用泛型編程實現同質容器類 659 12.8.1 設計目的 660 12.8.2 基於模板的同質容器的優點 665 12.9 基於模板的容器的缺點 666 12.10 導航容器 669 12.11 主動迭代器 673 12.12 管理容器和迭代器——客戶的角度 682 12.12.1 樣式1:在容器中創建並返回迭代器供用戶使用 683 12.12.2 樣式2:按值返回用戶可使用迭代器控制的容器 683 12.13 C++標準模板庫(STL) 685 12.13.1 STL容器 686 12.13.2 迭代器 687 12.13.3 STL中的算法 687 12.14 小結 690 12.15 TArray容器的實現代碼 691 **3章 理解C++對像模型 701 13.1 高效實現 701 13.2 C++表示對像的方式 701 13.2.1 沒有虛函數的類 702 13.2.2 成員函數 702 13.2.3 靜態數據成員 703 13.2.4 構造函數 704 13.3 包含虛函數的類 705 13.4 在共享庫之間共享虛函數表 708 13.5 虛函數和多重繼承(非虛基類) 709 13.6 虛基類 715 13.6.1 虛基類的成員訪問 715 13.6.2 帶虛函數的虛基類 717 13.7 RTTI(運行時類型識別)的實現支持 719 13.8 基於對像和面向對像編程 720 13.9 引用、指針和值 721 13.9.1 引用和指針的賦值 721 13.9.2 復制構造函數 722 13.9.3 構造函數的職責 723 13.10 復制構造函數的責任 726 13.11 優化對像的按值傳遞和按值返回 727 13.11.1 按值傳遞 727 13.11.2 按值返回 729 13.12 運行時初始化 732 13.13 小結 732 附錄 A 733 參考書目和**讀物 737 索引 741
| | | | | |