![](https://img1.360buyimg.com/imgzone/jfs/t1/63088/2/8881/297757/5d6951ebE0b3bba82/96c72df8dd3894c9.jpg)
作 者:王石磊 韓海玲 著
定 價:69
出 版 社:人民郵電出版社
出版日期:2016年09月01日
頁 數:476
裝 幀:簡裝
ISBN:9787115419910
本書的特色是實現了入門知識、實例演示、範例演練、技術解惑、綜合實戰5大部分內容的融合,讓讀者看得懂、用得上、學得會。一本書的容量,講解了入門類、範例類和項目實戰類三類圖書的內容。豐富的配套資源 學習更高效440個實例,更多的實踐演練機會837分鐘視頻講解,降低學習難度290個拓展實例,真正地舉一反三 101個技術解惑,破解學習難點“技術講解”→範例演練”→“技術解惑”貫穿全書,全面掌握C++語言開發技術講解:通過145個實例,循序漸進地講解了C++開發的各個知識點。等
●目錄第1章 說真的,我們還要學習C++嗎 1(視頻總計29分鐘,實例1個,拓展實例2個,技術解惑2個)1.1 C++概述 21.2 開發工具—Visual C++ 21.2.1 先看Visual C++的基本特點 21.2.2 安裝Visual C++ 31.2.3 Visual C++集成開發環境介紹 51.3 使用Visual Studio 2010 201.4 第一個C++程序 221.5 技術解惑 251.5.1 初學者經常不知道自己該學什麼 251.5.2 初學者需要知道的正確觀念 25第2章 C++的重要特質分析 26(視頻總計27分鐘,實例1個,拓展實例2個,技術解惑3個)2.1 什麼是面向對像(object-oriented) 272.1.1 什麼是OOP 272.1.2 面向對像編程 272.2 分析C++的程序結構 272.2.1 從一段代碼看C++程序結構 282.2.2 看C++的文件組織 292.3 必須遵循的編碼規範 302.3.1 養成良好的風格 302.3.2 必須使用的注釋 302.3.3 代碼也需要化妝 312.4 輸入輸出基礎 332.4.1 標準輸入與輸出對像 332.4.2 一個使用IO庫的程序 332.5 算法是程序的靈魂 352.5.1 算法的概念 352.5.2 流程圖表示算法 362.5.3 計算機語言表示算法 382.6 技術解惑 382.6.1 C++是面向對像,C是面向過程,那麼這個對像和過程是什麼意思呢 382.6.2 面向對像和面向過程的區別 382.6.3 學好C++的建議 39第3章 你不一定了解的基礎語法 40(視頻總計19分鐘,實例1個,拓展實例2個,技術解惑5個)3.1 先看標識符 413.1.1 C++中的保留字 413.1.2 需要遵循的命名規則 413.2 最基本的數據類型 433.2.1 數字運算型 433.2.2 邏輯運算型 463.2.3 字符型和字符串 463.3 標準類型庫基礎 473.3.1 命名空間using聲明 483.3.2 標準庫的string類 483.3.3 vector類型簡介 523.3.4 迭代器簡介 553.3.5 bitset類型初步 573.4 技術解惑 603.4.1 C++的標識符長度應當符合“min-length &&max-information”原則 603.4.2 字符和字符串有什麼區別 603.4.3 C++中string類字符串和C中char*/char[]型字符串的差別 603.4.4 C++字符串和C字符串的轉換 613.4.5 C++字符串和字符串結束標志 61第4章 你不一定了解的變量和常量 62(視頻總計29分鐘,實例8個,拓展實例16個,技術解惑6個)4.1 先來看變量 634.1.1 定義變量 634.1.2 聲明變量 634.2 變量的作用域 644.2.1 作用域和生存期 644.2.2 作用域限定符 664.2.3 存儲類型 674.2.4 C++變量初始化 684.2.5 C++變量命名規範 694.3 再來看常量 704.3.1 什麼是常量 704.3.2 常量的分類 704.3.3 常量的應用 734.4 技術解惑 744.4.1 C++常量的命名需要遵循一定的規範嗎 744.4.2 在C++程序中,用const定義常量還是用#define 744.4.3 const是個很重要的關鍵字,在使用時應該注意些什麼呢 744.4.4 關於全局變量的初始化,C語言和C++有區別嗎 754.4.5 C/C++變量在內存中的分布 754.4.6 靜態變量的初始化順序 75第5章 你不一定了解的運算符 76(視頻總計29分鐘,實例8個,拓展實例16個,技術解惑4個)5.1 先看賦值運算符 775.2 再看算術運算符 785.3 再看比較運算符 795.4 再看邏輯運算符 805.5 單獨看++/??運算符 815.6 再看位運算符 825.7 再看求字節數運算符 855.8 再看條件運算符 865.9 再看逗號運算符 865.10 技術解惑 885.10.1 避免運算結果溢出的一個方案 885.10.2 運算符重載的權衡 885.10.3 運算符的優先級和結合性 885.10.4 運算符重載是對已有運算符賦予多重含義 90第6章 說說表達式 91(視頻總計19分鐘,實例4個,拓展實例8個,技術解惑2個)6.1 何謂表達式 926.1.1 看天下幾分—表達式的分類 926.1.2 看表達式的書寫方式 926.2 說說類型轉換 926.2.1 先看隱式轉換 936.2.2 再看顯式轉換 946.3 技術解惑 986.3.1 C/C++ 表達式的 986.3.2 表達式的真正功能 98第7章 流程控制語句 99(視頻總計42分鐘,實例13個,拓展實例26個,技術解惑6個)7.1 最簡單的語句和語句塊 1007.1.1 最簡單的語句 1007.1.2 說說語句塊 1007.1.3 最後是語句的總結 1027.2 最常見的順序結構 1037.3 選擇結構 1047.3.1 先看單分支結構語句 1047.3.2 再看雙分支結構語句 1057.3.3 還要使用多分支結構語句 1087.4 循環結構詳解 1107.4.1 for語句循環 1117.4.2 while語句 1137.4.3 說說do-while語句 1147.5 跳轉語句 1157.5.1 何謂break語句 1157.5.2 何謂continue語句 1167.5.3 何謂goto語句 1167.6 技術解惑 1177.6.1 循環中斷的問題 1177.6.2 分析循環語句的效率 1177.6.3 幾種循環語句的比較 1187.6.4 C++中,for循環該怎麼讀 1187.6.5 一個C++循環結構嵌套的問題 1187.6.6 break語句和continue語句的區別 119第8章 學習C++的優選障礙—指針 120(視頻總計42分鐘,實例12個,拓展實例24個,技術解惑7個)8.1 說說指針的基本概念 1218.2 定義指針的幾種方式 1218.2.1 先定義指針 1218.2.2 再識別指針 1228.3 指針的分類 1238.4 指針初始化 1238.4.1 第一步:指針地址初始化 1248.4.2 第二步:變量地址初始化 1248.4.3 第三步:new分配 1258.4.4 第四步:malloc函數分配 1258.5 指針運算 1268.5.1 算數運算 1268.5.2 關繫運算 1288.6 指針的指針 1308.7 使用指針 1308.7.1 指針賦值 1318.7.2 *操作符 1318.8 分析指針和引用的關繫 1328.9 特殊指針 1358.9.1 先看void型指針 1358.9.2 再看空指針 1368.10 技術解惑 1378.10.1 指針的命名規範 1378.10.2 C++中指針和引用的區別 1388.10.3 變量在語言中的實質 1398.10.4 C++開發如何避免和解決野指針 1398.10.5 常量指針常量和常量引用常量 1418.10.6 指針常量和引用常量的對比 1418.10.7 常量指針和常量引用的對比 141第9章 復合類型 142(視頻總計57分鐘,實例23個,拓展實例46個,技術解惑7個)9.1 數組基礎 1439.1.1 先定義數組 1439.1.2 再看高級數組 1439.1.3 分析數組的完整性 1449.1.4 看維數不全 1449.1.5 看無維數 1449.2 動態數組 1459.2.1 在堆上分配空間的動態數組 1459.2.2 在棧上分配空間的“假動態”數組 1469.3 數組存儲 1489.3.1 列存儲 1489.3.2 行存儲 1489.4 字符數組 1499.4.1 定義字符數組 1499.4.2 字符數組和字符串指針變量 1509.5 數組初始化 1519.5.1 先看定義時的初始化 1519.5.2 初始化賦值語句 1519.6 指針和數組 1529.6.1 指向數組的指針 1539.6.2 指針數組 1549.7 使用數組 1559.7.1 索引方式 1559.7.2 指針方式 1569.8 枚舉 1579.8.1 枚舉基礎 1579.8.2 使用枚舉 1599.9 結構體 1619.9.1 指向結構的指針 1629.9.2 使用結構體 1629.10 聯合 1639.11 自定義類型 1649.11.1 先看typedef的作用 1659.11.2 再看typedef的使用 1669.12 技術解惑 1669.12.1 字符數組和字符串的區別 1669.12.2 字符數組和字符串可以相互轉換 1679.12.3 靜態數組的速度快於動態數組 1679.12.4 Arrays與Vector的區別 1679.12.5 一道關於數組的面試題 1689.12.6 數組名不是指針 1699.12.7 作為一個用戶自定義的類型,其所占用的內存空間是多少呢 170第10章 函數 171(視頻總計47分鐘,實例16個,拓展實例32個,技術解惑8個)10.1 C++函數基礎 17210.1.1 先看定義方式 17210.1.2 函數分類 17210.1.3 函數定義實例 17710.2 函數的參數 17910.2.1 何謂形參實參 17910.2.2 使用數組做函數參數 18010.3 返回值和返回語句 18110.4 調用函數 18210.4.1 單獨調用 18210.4.2 函數表達式 18310.4.3 實參調用 18310.4.4 參數傳遞 18410.5 函數遞歸 18510.6 指向函數的指針 18610.7 將函數作為參數 18710.8 變量的作用域和生存期 18810.8.1 變量作用域 18910.8.2 靜態存儲變量和動態存儲變量 19010.9 函數main()和命令行處理 19210.10 技術解惑 19310.10.1 用typedef來定義一個函數指針類型 19310.10.2 const關鍵字在函數中的作用 19410.10.3 C++函數的內存分配機制 19410.10.4 主函數和子函數的關繫 19510.10.5 函數聲明和函數定義的區別 19510.10.6 使用全局變量的注意事項 19510.10.7 使用寄存器變量的注意事項 19610.10.8 自動變量的特點 196第11章 輸入和輸出 197(視頻總計49分鐘,實例12個,拓展實例24個,技術解惑5個)11.1 iostream對像 19811.1.1 標準的I/O接口 19811.1.2 文件I/O 20011.1.3 字符串I/O 20111.2 輸出 20211.2.1 預定義類型輸出 20211.2.2 自定義類型輸出 20311.3 輸入 20411.3.1 預定義類型輸入 20411.3.2 自定義類型輸入 20511.4 輸入/輸出格式化 20611.4.1 使用ios類成員函數 20611.4.2 使用操縱函數 20711.5 文件 20911.5.1 打開和關閉 20911.5.2 順序讀寫 21011.5.3 隨機讀寫 21211.5.4 二進制文件 21311.5.5 檢測EOF 21311.6 技術解惑 21511.6.1 輸入/輸出時數的進制問題 21511.6.2 數據間隔 21611.6.3 內存文件映射 21611.6.4 get和put的值的差異 21711.6.5 使用控制符控制輸出格式 217第12章 類和封裝 218(視頻總計37分鐘,實例9個,拓展實例18個,技術解惑3個)12.1 類 21912.1.1 先聲明類 21912.1.2 再看類的屬性 22012.1.3 再看類的方法 22012.1.4 再看構造函數 22112.1.5 再看析構函數 22412.1.6 再看靜態成員 22512.1.7 &nbs 22612.1.8 再看修飾符 22812.1.9 指向類成員的指針 22812.1.10 嵌套類 22912.1.11 類文件的組織 23012.2 對像 23212.2.1 先定義對像 23212.2.2 再使用對像 23312.2.3 再看this指針 23412.3 技術解惑 23612.3.1 淺拷貝和深拷貝 23612.3.2 構造函數的錯誤認識和正確認識 23712.3.3 保護性析構函數的作用 237第13章 命名空間和作用域 239(視頻總計23分鐘,實例3個,拓展實例6個,技術解惑4個)13.1 命名空間介紹 24013.2 定義命名空間 24013.3 使用命名空間 24313.3.1 使用域限定符 24313.3.2 使用using指令 24313.3.3 using聲明 24413.3.4 別名 24513.4 作用域 24513.4.1 什麼是作用域 24613.4.2 作用域的分類 24713.5 技術解惑 24913.5.1 using指令與using聲明的比較 24913.5.2 為什麼需要命名空間 24913.5.3 命名空間的作用 25013.5.4 在C++中使用這些頭文件的方法 250第14章 類的繼承和派生 252(視頻總計37分鐘,實例7個,拓展實例14個,技術解惑5個)14.1 繼承與派生的基本概念 25314.2 C++繼承機制 25314.3 繼承和派生的基本知識 25514.3.1 單重繼承、多重繼承與繼承鏈 25514.3.2 公有派生和私有派生 25614.3.3 保護成員與保護派生 25614.3.4 &nbs函數 25714.4 派生一個類 25714.4.1 先看基類的使用狀況 25714.4.2 派生的使用狀況 25814.4.3 再看構造函數 26014.4.4 再看析構函數 26214.4.5 使用同名方法 26314.4.6 使用同名屬性 26514.5 單重繼承和多重繼承 26614.5.1 單重繼承 26614.5.2 多重繼承 26614.5.3 構造函數和析構函數 26714.6 虛繼承和虛基類 26914.7 技術解惑 27114.7.1 通過虛繼承解決二義性問題 27114.7.2 使用C++虛基類的注意事項 27214.7.3 一個問題 27314.7.4 多重繼承的二義性 27314.7.5 允許派生類中的成員名和基類中的成員名相同 275第15章 多態性詳解 276(視頻總計39分鐘,實例11個,拓展實例22個,技術解惑6個)15.1 基本概念 27715.2 先看宏多態 27915.3 虛函數 28015.3.1 虛函數基礎 28015.3.2 靜態綁定和動態綁定 28115.3.3 純虛函數 28215.4 抽像類 28315.4.1 什麼是抽像類 28315.4.2 抽像類的派生 28415.5 運算符重載 28515.5.1 運算符重載基礎 28515.5.2 運算符 28615.5.3 運算符 28715.6 函數重載 28815.6.1 函數重載基礎 28815.6.2 參數類型不同的重載 28915.7 流的重載 29015.7.1 流插入重載 29015.7.2 流提取重載 29115.8 覆蓋 29315.8.1 覆蓋函數 29315.8.2 覆蓋變量 29415.9 技術解惑 29515.9.1 重載、覆蓋和隱藏的區別 29515.9.2 在重載運算符的時候要權衡實施的必要性 29615.9.3 為什麼需要函數重載 29615.9.4 重載函數的調用匹配 29715.9.5 另一種虛方法查找方案 29815.9.6 兩種重載方法的比較 298第16章 模板的威力 299(視頻總計27分鐘,實例3個,拓展實例6個,技術解惑4個)16.1 基本概念 30016.2 類模板 30116.2.1 定義類模板 30116.2.2 使用類模板 30216.2.3 類模板的派生 30416.2.4 類模板和模板類的區別 30416.3 函數模板 30516.3.1 定義函數模板 30516.3.2 函數模板示例 30616.3.3 模板實例化 30616.4 模板組合 30716.5 技術解惑 30816.5.1 在函數模板中使用多個類型參數時要避免類型參數的二義性 30816.5.2 函數模板和模板函數的區別 30816.5.3 函數模板和類模板的區別 30916.5.4 仿函數的用處 309第17章 進一步剖析string類 310(視頻總計19分鐘,實例3個,拓展實例6個,技術解惑3個)17.1 string類的方法 31117.2 string類的運算 31317.2.1 查找函數 31317.2.2 替換函數 31417.2.3 插入函數 31417.2.4 刪除函數 31417.2.5 比較函數 31517.2.6 連接函數 31517.2.7 賦值函數 31517.2.8 特性描述函數 31617.2.9 構造函數 31617.2.10 迭代器處理 31617.2.11 其他幾種處理函數 31617.3 string類綜合應用 31717.3.1 頭文件123.h 31817.3.2 類實現文件yinyong.cpp 31817.3.3 測試使用主文件zonghe.cpp 32017.4 技術解惑 32017.4.1 C++字符串和C字符串的轉換 32017.4.2 大小和容量函數 32117.4.3 cstring類與string類的比較 321第18章 異常處理 323(視頻總計19分鐘,實例5個,拓展實例10個,技術解惑13個)18.1 什麼是異常處理 32418.2 C++的異常處理機制 32418.2.1 throw拋出異常 32618.2.2 raise拋出異常 32718.2.3 try-catch異常捕獲 32818.3 異常處理中的構造和析構 33018.4 C++異常處理機制總結 33118.5 技術解惑 33318.5.1 編寫軟件的目標 33318.5.2 關於C++的new關鍵字的異常處理 33318.5.3 C語言異常處理和結構化異常處理有什麼區別? 33418.5.4 C++拋出異常不捕獲,程序的空間會釋放嗎? 33418.5.5 throw拋出異常的特點 33518.5.6 關於C 異常處理的心得體會 33518.5.7 慎用catch(...) 33518.5.8 慎用繼承體繫裡的類作為catch的參數 33618.5.9 對像析構函數被調用的3種場合 33618.5.10 不要在異常處理體繫中寄希望於類型轉換 33618.5.11 有C++異常處理體繫捕獲不到的東西嗎? 33718.5.12 set_unexpected函數的用處 33718.5.13 不要讓異常逃離析構函數 337第19章 內存管理 338(視頻總計19分鐘,實例5個,拓展實例10個,技術解惑3個)19.1 內存分類 33919.2 棧內存管理 33919.2.1 申請棧內存 33919.2.2 使用棧內存 34019.2.3 釋放棧內存 34219.2.4 改變內存大小 34219.3 堆內存管理 34319.3.1 申請堆內存 34319.3.2 使用堆內存 34319.3.3 釋放堆內存 34419.3.4 改變大小 34519.4 技術解惑 34619.4.1 堆和棧的區別 34619.4.2 常見的內存錯誤及其對策 34719.4.3 防止發生溢出錯誤 348第20章 預處理 349(視頻總計24分鐘,實例2個,拓展實例4個,技術解惑3個)20.1 什麼是預處理 35020.2 C++中常見的預處理 35020.2.1 文件包含 35020.2.2 條件編譯 35120.2.3 布局控制 35220.2.4 宏替換 35420.2.5 其他預編譯指令 35520.3 分析宏的常見陷阱 35620.4 技術解惑 35720.4.1 預處理的未來 35720.4.2 兩者的意義 35820.4.3 一個初學者的問題 358第21章 錯誤和調試 359(視頻總計21分鐘,實例2個,拓展實例4個,技術解惑4個)21.1 什麼是錯誤 36021.1.1 Bug的由來 36021.1.2 程序設計方面的解釋 36021.2 常見的錯誤分析 36021.3 程序調試常見錯誤 36421.4 C++編程中的調試技巧 36921.4.1 調試標記 36921.4.2 運行期間調試標記 36921.4.3 把變量和表達式轉換成字符串 37021.4.4 C語言的assert() 37021.5 技術解惑 37021.5.1 編寫規範易懂的代碼 37021.5.2 編寫安全可靠的代碼 37121.5.3 Visual C++調試技術 37221.5.4 常見的非語法錯誤 375第22章 初入江湖—圖書借閱繫統的實現過程 376(視頻總計19分鐘)22.1 項目要求 37722.2 需求分析 37722.3 繫統具體實現 37822.3.1 數據結構設計 37822.3.2 繫統主文件rent.cpp 37822.3.3 菜單處理文件mainfunction.h 37922.3.4 函數定義文件subfunction.h 37922.3.5 菜單處理實現文件mainfunction.cpp 38022.3.6 功能函數實現文件subfunction.cpp 383第23章 開始闖關(1)—C++實現網絡應用項目 396(視頻總計18分鐘)23.1 項目要求 39723.1.1 客戶機/服務器模式介紹 39723.1.2 客戶機/服務器模式的運作流程 39823.2 實現原理 39823.2.1 什麼是winsocket編程接口 39823.2.2 winsocket中的函數 39823.3 具體實現 40323.3.1 客戶端和服務器端的公用文件 40323.3.2 實現服務器端 40523.3.3 實現客戶端 406第24章 開始闖關(2)—C++實現遊戲項目 408(視頻總計43分鐘)24.1 計算機遊戲基礎 40924.1.1 遊戲的基本流程 40924.1.2  素 40924.1.3 遊戲層次 41024.2 項目分析 41024.2.1 遊戲的角色 41024.2.2 遊戲界面表現 41124.3 具體實現 41124.3.1 實現相關位圖 41124.3.2 變量與函數 41124.3.3 實現全屏 41224.3.4 類初始化 41324.3.5 實現具體顯示界面 41324.3.6 信息提示 41524.3.7 和時間段相關的操作 41524.3.8 鍵盤操作 41624.3.9 我方發射子彈 41724.3.10 敵機出現 41824.3.11 敵機發射子彈 41824.3.12 敵機子彈移動 41924.3.13 火力實現 419第25章 功成名就—DirectX實現媒體播放器 421(視頻總計37分鐘)25.1 DirectX技術基礎 42225.1.1 DirectX技術概述 42225.1.2 DirectX的基本結構及組成 42225.1.3 DirectX主要組件介紹 42325.2 繫統分析和設計 42525.2.1 功能需求和效果展示 42625.2.2 設計FilterGraph結構 42725.3 實現媒體控制類 42725.3.1 CDXGraph類初始化 42725.3.2 創建Graph濾波器鏈表 42825.3.3 設計圖像窗口 42925.3.4 媒體播放控制 43025.3.5 視頻全屏顯示 43325.3.6 抓圖保存 43325.4 實現播放器主題 43325.4.1 打開一個媒體文件 43325.4.2 渲染媒體文件 43425.4.3 播放媒體文件 43425.4.4 實現控制功能 43525.4.5 實現拖放功能 43825.4.6 實現音量調節功能 43825.4.7 添加背景圖片 439第26章 笑傲江湖—C++網絡視頻監控繫統 440(視頻總計65分鐘)26.1 繫統分析 44126.2 繫統設計 44126.3 繫統預覽 44126.4 數據庫設計 44226.5 選購監控卡 44426.6 具體編程實現 44526.6.1 設計公共模塊 44526.6.2 設計主窗體 44926.7 設計管理員登錄模塊 46026.8 設計監控管理模塊 46226.8.1 監控管理技術分析 46226.8.2 編程監控管理 46326.8.3 &nbs測試處理 46526.9 設計廣角自動監控模塊 46626.9.1 可行性分析 46626.9.2 編程實現 46726.9.3 &nbs測試 46926.10 設計視頻回放模塊 47026.11 分析絢麗界面的實現方法 471
本書由淺入深地講解了C++的開發技術,並通過具體實例的實現過程演練了各個知識點的具體應用。全書共26章,其中第1~2章講解了C++技術的基礎知識,包括C++的重要特性和搭建開發環境;第3~7章分別講解了C++語法、變量、常量、流程控制、運算符和表達式等知識,這些內容都是C++開發技術的核心知識;第8~11章分別講解了輸入、輸出、函數、指針和復合類型的基本知識,包含了C++開發技術的重點和難點;第12~21章講解了面向對像、類、繼承、派生、多態、內存管理和異常處理等內容;第22~26章通過5個綜合實例的實現過程,介紹了C++技術在綜合項目中的開發流程。全書內容循序漸進,以“範例演練”和“技術解惑”貫穿全書,引領讀者全面掌握C++語言開發。本書不但適合C++的初學者,也適合有一定C++基礎的讀者,還可以作為大專院校相關專業師生的學習用書和培訓學校的教材。
王石磊 韓海玲 著
南京航天大學通信工程碩士,計算機工程碩士,傑出C++開發工程師和架構師,並且精通Linux底層嵌入式開發技術,曾經從底層硬件到頂層應用獨立的開發過一款通信產品。業餘期間,曾經在國內主流期刊中發表過多篇通信領域的傑出論文。業餘時間樂於技術分享。