 |
-- 會員 / 註冊 --
|
|
|
|
C++編程從入門到實踐 第2版 ( 簡體 字) |
作者:王石磊 | 類別:1. -> 程式設計 -> C++ -> C++ |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 54193 詢問書籍請說出此書號!【缺書】 NT售價: 495 元 |
出版日:3/1/2021 |
頁數:380 |
光碟數:0 |
|
站長推薦:  |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115539694 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書由淺入深地講解了C++開發技術的核心內容,并通過具體實例演練了各個知識點在實踐中的具體使用方法。全書共23章:第1∼2章講解了C++技術的基礎知識,包括C++的重要特性和開發環境搭建;第3∼7章分別講解了C++語法、變量、常量、流程控制、運算符和表達式等知識;第8∼11章分別講解了輸入、輸出、函數、指針和復合類型的基本知識,包含了C++開發技術的重點和難點;第12∼20章分別講解了面向對象、類、繼承、派生、多態、內存管理和異常等內容;第21∼23章通過3個綜合實例,介紹了C++技術在綜合項目中的開發流程。全書內容循序漸進,以“范例演練”和“技術解惑”貫穿全書,引領讀者全面掌握C++語言。 本書不但適合C++的初學者,也適合有一定C++基礎的讀者,還可以作為大專院校相關專業師生的學習用書和培訓學校的教材。 |
目錄:第 1章 C++語言介紹 1 1.1 什么是C++ 2 1.1.1 C++的發展歷史 2 1.1.2 C++的優點和缺點 2 1.2 C++語言的現狀 3 1.3 面向對象 4 1.4 標準庫介紹 4 第 2章 搭建C++開發環境 5 2.1 使用Visual C++ 6.0 6 2.1.1 Visual C++ 6.0的特點 6 2.1.2 安裝Visual C++ 6.0 6 2.2 使用Microsoft Visual Studio 9 2.2.1 Visual Studio 2017的 新功能 9 2.2.2 安裝Microsoft Visual Studio 2017 10 2.3 編寫第 一個C++程序 12 2.3.1 使用Visual C++ 6.0 實現 13 2.3.2 使用Visual Studio 2017 實現 15 2.4 使用手機開發C++程序 17 2.4.1 GCC和C4droid 18 2.4.2 在手機中搭建C++開發 環境 18 2.4.3 在iPhone中使用 Mobile C/C++ 18 2.5 技術解惑 19 2.5.1 初學者經常不知道自己 該學什么 19 2.5.2 初學者需要知道的正確 觀念 19 2.6 課后練習 19 第3章 C++語言開發基礎 20 3.1 面向對象 21 3.1.1 兩種對象的產生方式 21 3.1.2 C++面向對象編程的 流程 21 3.2 C++語言的程序結構 21 3.2.1 初識C++程序結構 21 3.2.2 看C++程序的文件組織 23 3.3 C++編碼規范 24 3.3.1 養成良好的風格 24 3.3.2 必須使用的注釋 24 3.3.3 代碼也需要化妝 25 3.4 輸入和輸出 26 3.4.1 標準輸入與輸出對象 27 3.4.2 一個使用I/O庫的程序 27 3.4.3 使用using聲明命名空間 29 3.5 算法 30 3.5.1 算法的概念 30 3.5.2 流程圖表示算法 31 3.5.3 計算機語言表示算法 32 3.6 技術解惑 33 3.6.1 C++是面向對象,C是面 向過程,那么這個對象和 過程是什么意思 33 3.6.2 面向對象和面向過程的 區別 33 3.6.3 學好C++的建議 34 3.7 課后練習 34 第4章 C++語言的基礎語法 35 4.1 標識符 36 4.1.1 C++中的保留字 36 4.1.2 標識符的命名規則 36 4.2 數據類型 38 4.2.1 數字運算型 38 4.2.2 邏輯運算型 41 4.2.3 字符型和字符串 42 4.3 標準類型庫 43 4.3.1 C++標準庫介紹 43 4.3.2 標準庫中的主要成員 44 4.4 技術解惑 45 4.4.1 C++的標識符長度的 “min-length && max-information”原則 45 4.4.2 字符和字符串的區別 45 4.4.3 C++中string類字符串和 C中char*/char[]型 字符串的差別 45 4.4.4 C++字符串和C字符串的 轉換 45 4.4.5 C++字符串和字符串結束 標志 46 4.5 課后練習 46 第5章 變量和常量 47 5.1 變量 48 5.1.1 定義變量 48 5.1.2 聲明變量 48 5.2 變量的作用域 49 5.2.1 作用域和生存期 49 5.2.2 作用域限定符 51 5.2.3 存儲類型 51 5.2.4 C++變量初始化 53 5.3 常量 54 5.3.1 什么是常量 54 5.3.2 使用常量 55 5.4 使用C++ 11標準處理復雜的 類型 56 5.4.1 定義類型別名 56 5.4.2 使用auto實現類型推導 57 5.4.3 使用decltype推導類型 58 5.4.4 使用常量表達式 59 5.5 技術解惑 60 5.5.1 C++常量的命名是否需要 遵循一定的規范 60 5.5.2 在C++程序中用const還是 用#define定義常量 60 5.5.3 const是個很重要的 關鍵字,在使用時應該 注意哪些 60 5.5.4 關于全局變量的初始化, C語言和C++是否有 區別 61 5.5.5 C/C++變量在內存中的 分布 61 5.5.6 靜態變量的初始化順序 61 5.6 課后練習 61 第6章 運算符和表達式 62 6.1 運算符和表達式詳解 63 6.1.1 賦值運算符和賦值 表達式 63 6.1.2 算術運算符和算術 表達式 64 6.1.3 比較運算符和比較 表達式 66 6.1.4 邏輯運算符和邏輯 表達式 67 6.1.5 ++/ 運算符和表達式 67 6.1.6 位運算符和位表達式 68 6.1.7 求字節數運算符和 求字節表達式 70 6.1.8 條件運算符和條件 表達式 72 6.1.9 逗號運算符和逗號 表達式 72 6.1.10 運算符的優先級和 結合性 73 6.2 類型轉換 76 6.2.1 使用隱式轉換 76 6.2.2 使用顯式轉換 77 6.3 技術解惑 81 6.3.1 避免運算結果溢出的 一個方案 81 6.3.2 運算符重載的權衡 81 6.3.3 運算符重載是對已有 運算符賦予多重含義 81 6.4 課后練習 82 第7章 流程控制語句 83 7.1 語句和語句塊 84 7.1.1 最簡單的語句 84 7.1.2 語句塊 84 7.2 順序結構 86 7.3 選擇結構 86 7.3.1 單分支結構語句 87 7.3.2 雙分支結構語句 87 7.3.3 使用多分支結構語句 90 7.4 循環結構詳解 91 7.4.1 循環語句的形式 92 7.4.2 for語句循環 92 7.4.3 使用while語句 94 7.4.4 使用do-while語句 95 7.5 使用跳轉語句 96 7.5.1 使用break語句 96 7.5.2 使用continue語句 97 7.5.3 使用goto語句 97 7.6 C++ 11新規范:基于范圍的 for循環語句 98 7.7 技術解惑 99 7.7.1 循環中斷的問題 99 7.7.2 分析循環語句的效率 100 7.7.3 幾種循環語句的比較 100 7.7.4 C++中的for循環該 怎么讀 100 7.7.5 一個C++循環結構 嵌套的問題 100 7.7.6 break語句和continue 語句的區別 101 7.8 課后練習 101 第8章 指針 102 8.1 指針的基本概念 103 8.2 定義指針 103 8.2.1 定義指針的方式 103 8.2.2 識別指針 104 8.2.3 指針的分類 104 8.3 指針的初始化 105 8.3.1 指針初始化時的類型 106 8.3.2 指針地址初始化 106 8.3.3 變量地址初始化 106 8.3.4 使用new分配內存單元 107 8.3.5 使用函數malloc分配 內存單元 107 8.4 指針運算 108 8.4.1 算術運算 108 8.4.2 關系運算 110 8.5 指針的指針 112 8.6 使用指針 113 8.6.1 指針賦值 114 8.6.2 使用“*”操作符 114 8.7 分析指針和引用的關系 115 8.8 特殊指針 117 8.8.1 void型指針 118 8.8.2 空指針 119 8.8.3 C++ 11:使用nullptr 得到空指針 120 8.9 C++ 11:使用標準庫函數 begin和end 120 8.10 技術解惑 121 8.10.1 指針的命名規范 121 8.10.2 指針和引用的區別 122 8.10.3 變量的實質 123 8.10.4 避免和解決野指針 123 8.10.5 常量指針常量和常量 引用常量 125 8.10.6 指針常量和引用常量的 對比 125 8.10.7 常量指針和常量引用的 對比 125 8.11 課后練習 126 第9章 數組、枚舉、結構體和聯合 127 9.1 使用數組 128 9.1.1 定義數組 128 9.1.2 高級數組 129 9.1.3 分析數組的完整性 130 9.2 動態數組 131 9.2.1 在堆上分配空間的 動態數組 131 9.2.2 在棧上分配空間的 “假動態”數組 132 9.3 字符數組 133 9.3.1 定義字符數組 133 9.3.2 字符數組和字符串指針 變量 134 9.4 數組初始化 135 9.4.1 定義時的初始化 135 9.4.2 初始化賦值語句 136 9.5 指針和數組 137 9.5.1 基本原理 137 9.5.2 指向數組的指針 137 9.5.3 指針數組 138 9.6 枚舉 139 9.6.1 枚舉基礎 139 9.6.2 使用枚舉 140 9.7 結構體 141 9.7.1 定義結構體 142 9.7.2 指向結構體的指針 142 9.7.3 使用結構體 143 9.8 聯合 144 9.9 C++ 11新特性:數組的 替代品——array 145 9.10 技術解惑 146 9.10.1 字符數組和字符串的 區別 146 9.10.2 字符數組和字符串可以 相互轉換 147 9.10.3 靜態數組的速度快于 動態數組 147 9.10.4 Arrays與Vector的 區別 147 9.10.5 一道關于數組的 面試題 147 9.10.6 數組名不是指針 149 9.10.7 作為一個用戶自定義 類型,其所占用內存 空間是多少 149 9.11 課后練習 150 第 10章 函數 151 10.1 函數基礎 152 10.1.1 定義函數 152 10.1.2 函數分類 153 10.2 參數和返回值 158 10.2.1 什么是形參實參 158 10.2.2 使用數組作函數 參數 159 10.3 調用函數 160 10.3.1 單獨調用 160 10.3.2 函數表達式 160 10.3.3 調用實參 161 10.3.4 參數傳遞 161 10.4 函數的基本操作 162 10.4.1 函數遞歸 162 10.4.2 指向函數的指針 163 10.4.3 將函數作為參數 164 10.5 技術解惑 165 10.5.1 用typedef定義一個函數 指針類型 165 10.5.2 const關鍵字在函數中的 作用 166 10.5.3 C++函數的內存分配 機制 167 10.5.4 主函數和子函數的 關系 167 10.5.5 函數聲明和函數定義的 區別 168 10.5.6 使用全局變量的 注意事項 168 10.5.7 使用寄存器變量的 注意事項 168 10.5.8 自動變量的特點 169 10.6 課后練習 169 第 11章 輸入和輸出 170 11.1 使用iostream對象 171 11.1.1 庫iostream的作用 171 11.1.2 標準的I/O接口 171 11.1.3 文件I/O 173 11.1.4 字符串I/O 174 11.2 輸出 175 11.2.1 預定義類型輸出 175 11.2.2 自定義類型輸出 176 11.3 輸入 177 11.3.1 預定義類型輸入 177 11.3.2 自定義類型輸入 177 11.4 輸入/輸出的格式化 178 11.4.1 使用ios類成員函數 179 11.4.2 使用操縱函數 180 11.5 文件操作 181 11.5.1 打開和關閉 181 11.5.2 隨機讀寫 183 11.5.3 二進制文件 184 11.5.4 檢測EOF 185 11.6 技術解惑 187 11.6.1 輸入/輸出時數的 進制問題 187 11.6.2 數據間隔 187 11.6.3 內存文件映射 188 11.6.4 get和put的值的 差異 188 11.6.5 使用控制符控制輸出 格式 188 11.7 課后練習 189 第 12章 面向對象的類和對象 190 12.1 類 191 12.1.1 聲明類 191 12.1.2 類的屬性 192 12.1.3 類的方法 192 12.1.4 構造函數 193 12.1.5 析構函數 194 12.1.6 靜態成員 195 12.1.7 友元 196 12.1.8 使用修飾符 198 12.2 對象 199 12.2.1 定義對象 199 12.2.2 對象數組 200 12.2.3 對象指針 201 12.2.4 使用this指針 201 12.3 C++ 11標準的新變化 203 12.3.1 定義一個類內初始值 203 12.3.2 使用initializer_list 處理多個實參 204 12.4 技術解惑 208 12.4.1 淺復制和深復制 208 12.4.2 構造函數的錯誤認識和 正確認識 209 12.4.3 保護性析構函數的 作用 209 12.5 課后練習 210 第 13章 命名空間和作用域 211 13.1 命名空間基礎 212 13.1.1 命名空間介紹 212 13.1.2 定義命名空間 212 13.2 使用命名空間 214 13.2.1 使用域限定符 214 13.2.2 使用using指令 215 13.2.3 使用using聲明 216 13.2.4 使用別名 216 13.3 作用域 217 13.3.1 與作用域相關的概念 217 13.3.2 作用域的分類 218 13.4 技術解惑 220 13.4.1 using指令與using 聲明的比較 220 13.4.2 為什么需要命名空間 220 13.4.3 命名空間的作用 221 13.4.4 C++中頭文件的使用 方法 222 13.5 課后練習 222 第 14章 繼承和派生 223 14.1 繼承與派生基礎 224 14.2 C++的繼承機制 224 14.2.1 定義繼承 224 14.2.2 派生類的繼承方式 226 14.2.3 公有派生和私有派生 227 14.3 派生類 228 14.3.1 使用基類 228 14.3.2 使用派生 228 14.3.3 構造函數 230 14.3.4 析構函數 232 14.3.5 使用同名函數 233 14.3.6 使用同名屬性 235 14.4 單重繼承和多重繼承 236 14.4.1 單重繼承 236 14.4.2 多重繼承 236 14.4.3 多重繼承下的構造 函數和析構函數 237 14.5 虛繼承和虛基類 239 14.5.1 虛基類介紹 240 14.5.2 使用虛基類 240 14.6 技術解惑 241 14.6.1 通過虛繼承解決二義性 問題 241 14.6.2 使用C++虛基類的 注意事項 242 14.6.3 虛基類的子對象的 初始化 243 14.6.4 允許派生類中的成員名與 基類中的成員名相同 243 14.7 課后練習 243 第 15章 多態 244 15.1 什么是多態 245 15.2 宏多態 245 15.3 虛函數 246 15.3.1 虛函數基礎 246 15.3.2 純虛函數 248 15.4 抽象類 249 15.4.1 什么是抽象類 249 15.4.2 抽象類的派生 249 15.5 運算符重載和函數重載 251 15.5.1 運算符重載基礎 251 15.5.2 重載一元運算符 251 15.5.3 重載二元運算符 252 15.5.4 參數類型不同的重載 253 15.6 流的重載 254 15.6.1 流插入重載 254 15.6.2 流提取重載 255 15.7 覆蓋 257 15.7.1 覆蓋函數 257 15.7.2 覆蓋變量 258 15.8 技術解惑 259 15.8.1 重載、覆蓋和隱藏的 區別 259 15.8.2 在重載運算符時要權衡 實施的必要性 260 15.8.3 為什么需要函數重載 260 15.8.4 重載函數的調用匹配 260 15.8.5 另一種虛方法查找 方案 261 15.8.6 兩種重載方法的比較 262 15.9 課后練習 262 第 16章 使用模板 263 16.1 模板基礎 264 16.2 類模板 265 16.2.1 什么是類模板 265 16.2.2 定義類模板 265 16.2.3 使用類模板 266 16.2.4 類模板的派生 268 16.2.5 類模板和模板類的 區別 268 16.3 函數模板 270 16.3.1 定義函數模板 270 16.3.2 使用函數模板 271 16.3.3 模板實例化 271 16.3.4 模板組合 273 16.4 技術解惑 273 16.4.1 在函數模板中使用多個 類型參數時要避免類型 參數的二義性 273 16.4.2 函數模板和模板函數的 區別 274 16.4.3 函數模板和類模板的 區別 274 16.4.4 仿函數的用處 275 16.5 課后練習 275 第 17章 異常處理 276 17.1 什么是異常處理 277 17.2 C++的異常處理 277 17.2.1 使用throw拋出異常 277 17.2.2 使用raise拋出異常 279 17.2.3 使用try catch異常 捕獲 279 17.2.4 異常處理中的構造和 析構 281 17.3 C++的異常處理總結 282 17.4 技術解惑 284 17.4.1 編寫軟件的目標 284 17.4.2 關于C++關鍵字new的 異常處理 284 17.4.3 C++語言異常處理和 結構化異常處理有 什么區別 285 17.4.4 C++拋出異常不捕獲, 程序的空間會釋放嗎 285 17.4.5 throw拋出異常的 特點 286 17.4.6 關于C++異常處理的 體會 286 17.4.7 慎用catch(...) 286 17.4.8 慎用繼承體系里的 類作為catch的參數 287 17.4.9 對象析構函數被調用的 3種場合 287 17.4.10 不要在異常處理體系中 寄希望于類型轉換 287 17.4.11 是否有C++異常處理 體系捕獲不到的東西 288 17.4.12 set_unexpected函數的 用處 288 17.4.13 不要讓異常逃離析構 函數 289 17.5 課后練習 289 第 18章 內存管理 290 18.1 內存分類 291 18.2 棧內存管理 291 18.2.1 申請棧內存 291 18.2.2 使用棧內存 292 18.2.3 釋放棧內存 294 18.2.4 改變內存大小 294 18.3 堆內存管理 295 18.3.1 申請堆內存 295 18.3.2 使用堆內存 296 18.3.3 釋放堆內存 296 18.3.4 改變內存大小 297 18.4 技術解惑 298 18.4.1 堆和棧的區別 298 18.4.2 常見的內存錯誤及其 對策 299 18.4.3 防止發生溢出錯誤 300 18.5 課后練習 300 第 19章 預處理 301 19.1 預處理基礎 302 19.1.1 什么是預處理 302 19.1.2 C++中的預處理 302 19.2 使用宏時的常見陷阱 308 19.3 技術解惑 309 19.3.1 預處理的未來 309 19.3.2 兩者的意義 310 19.3.3 一個初學者的問題 310 19.4 課后練習 310 第 20章 錯誤和調試 311 20.1 什么是錯誤 312 20.1.1 Bug的由來 312 20.1.2 程序設計方面的解釋 312 20.2 常見的錯誤分析 312 20.3 程序調試常見錯誤 317 20.4 C++編程中的調試技巧 322 20.4.1 調試標記 322 20.4.2 運行期間調試標記 322 20.4.3 把變量和表達式轉換成 字符串 323 20.4.4 C++語言的assert() 323 20.5 技術解惑 323 20.5.1 編寫規范易懂的代碼 323 20.5.2 編寫安全可靠的代碼 324 20.5.3 Visual C++調試技術 326 20.5.4 常見的非語法錯誤 328 第 21章 初入江湖——圖書借閱系統的 實現過程 329 21.1 項目要求 330 21.2 需求分析 330 21.3 系統具體實現 330 21.3.1 數據結構設計 331 21.3.2 系統主文件rent.cpp 331 21.3.3 菜單處理文件 mainfunction.h 332 21.3.4 函數定義文件 subfunction.h 332 21.3.5 菜單處理實現文件 mainfunction.cpp 333 21.3.6 功能函數實現文件 subfunction.cpp 337 第 22章 開始闖關——C++實現網絡 應用項目 353 22.1 項目要求 354 22.1.1 客戶機/服務器模式 介紹 354 22.1.2 客戶機/服務器模式的 運作流程 355 22.2 實現原理 355 22.2.1 什么是Winsocket編程 接口 355 22.2.2 Winsocket中的函數 355 22.3 具體實現 360 22.3.1 客戶端和服務器端的 公用文件 360 22.3.2 實現服務器端 363 22.3.3 實現客戶端 364 第 23章 開始闖關——C++實現游戲 項目 366 23.1 計算機游戲基礎 367 23.1.1 游戲的基本流程 367 23.1.2 游戲元素 367 23.1.3 游戲層次 368 23.2 項目分析 368 23.2.1 游戲的角色 368 23.2.2 游戲界面表現 369 23.3 具體實現 369 23.3.1 實現相關位圖 369 23.3.2 變量與函數 369 23.3.3 實現全屏 371 23.3.4 類初始化 371 23.3.5 實現具體顯示界面 372 23.3.6 信息提示 374 23.3.7 與時間段相關的操作 374 23.3.8 鍵盤操作 375 23.3.9 我方發射子彈 376 23.3.10 敵機出現 378 23.3.11 敵機發射子彈 378 23.3.12 敵機子彈移動 378 23.3.13 火力實現 379 |
序: |
|