C++從入門到精通(第6版)

明日科技

  • 出版商: 清華大學
  • 出版日期: 2024-06-01
  • 售價: $599
  • 貴賓價: 9.5$569
  • 語言: 簡體中文
  • ISBN: 7302652090
  • ISBN-13: 9787302652090
  • 相關分類: C++ 程式語言
  • 立即出貨 (庫存 < 4)

  • C++從入門到精通(第6版)-preview-1
  • C++從入門到精通(第6版)-preview-2
  • C++從入門到精通(第6版)-preview-3
C++從入門到精通(第6版)-preview-1

商品描述

《C++從入門到精通(第6版)》從初學者角度出發,以通俗易懂的語言和豐富多彩的實例,詳細講解了C++程序開發需要掌握的知識。本書分為4篇共19章:第1篇是基礎知識,包括緒論,數據類型,運算符與表達式,條件判斷語句,循環語句,函數,數組、指針和引用,以及構造數據類型;第2篇是面向對象,包括面向對象編程,類和對象,以及繼承與派生;第3篇是高級應用,包括模板、標準模板庫、RTTI與異常處理、程序調試、文件操作和網絡通信;第4篇是項目實戰,開發一個酒店客房管理系統,並製作一個植物大戰僵屍修改器。書中所有知識都結合具體實例進行介紹,涉及的程序代碼給出了詳細的註釋,讀者可以輕松領會C++的強大功能,快速提高開發能力。

目錄大綱

第1篇 基礎知識

第1章 緒論 2

視頻講解:32分鐘

1.1 認識C++ 2

1.1.1 C++的發展歷程 2

1.1.2 C/C++領域的傑出人物 3

1.1.3 C++語言的特點 4

1.2 認識C++程序代碼 5

1.2.1 C++程序代碼的組成 5

1.2.2 從源代碼到可執行程序 5

1.3 C++常用開發環境 6

1.4 C++工程項目文件 8

1.5 使用Dev C++創建程序 8

第2章 數據類型 11

視頻講解:162分鐘

2.1 第一個C++程序 11

2.2 關鍵字和標識符 13

2.3 基本數據類型 13

2.4 常量 14

2.4.1 整型常量 14

2.4.2 浮點型常量 15

2.4.3 字符常量 15

2.4.4 字符串常量 16

2.4.5 其他常量 16

2.5 變量 17

2.5.1 變量的聲明和定義 17

2.5.2 整型變量 17

2.5.3 浮點型變量 18

2.5.4 變量賦值 20

2.5.5 字符型變量 20

2.6 數據的輸入與輸出 21

2.6.1 C++中的流 21

2.6.2 格式化輸出 23

2.7 實踐與練習 29

第3章 運算符與表達式 30

視頻講解:119分鐘

3.1 表達式 30

3.2 賦值運算符和賦值表達式 31

3.3 算術運算符和算術表達式 31

3.3.1 算術運算符 31

3.3.2 算術表達式 32

3.3.3 自增、自減運算符 32

3.4 關系運算符和關系表達式 33

3.4.1 關系運算符 33

3.4.2 關系表達式 33

3.5 邏輯運算符和邏輯表達式 34

3.5.1 邏輯運算符 34

3.5.2 邏輯表達式 35

3.6 逗號運算符和逗號表達式 36

3.7 位運算符 36

3.8 移位運算符 37

3.9 復合賦值運算符 40

3.10 sizeof運算符 40

3.11 運算符的優先級和結合性 41

3.12 數據類型轉換 42

3.12.1 隱式類型轉換 42

3.12.2 強制類型轉換 43

3.13 判斷左值與右值 44

3.14 實踐與練習 45

第4章 條件判斷語句 46

視頻講解:102分鐘

4.1 語句、程序結構和流程圖 46

4.1.1 語句 46

4.1.2 程序結構 47

4.1.3 流程圖 47

4.2 if語句 48

4.2.1 簡單if語句 48

4.2.2 if…else語句 49

4.2.3 else if語句 50

4.3 if語句的嵌套 52

4.4 條件運算符 54

4.5 switch語句 55

4.6 實踐與練習 58

第5章 循環語句 60

視頻講解:85分鐘

5.1 while循環 60

5.2 do...while循環 62

5.3 for循環 63

5.4 循環控制 66

5.4.1 循環控制變量 66

5.4.2 break語句 66

5.4.3 continue語句 67

5.4.4 goto語句 68

5.5 循環嵌套 69

5.6 實踐與練習 72

第6章 函數 74

視頻講解:203分鐘

6.1 函數的定義和聲明 74

6.1.1 函數的定義 74

6.1.2 函數的聲明 75

6.2 函數的參數及返回值 76

6.2.1 函數的形參與實參 76

6.2.2 函數的調用與返回值 76

6.2.3 空函數 78

6.2.4 默認參數 79

6.3 嵌套調用與遞歸調用 80

6.3.1 嵌套調用 80

6.3.2 遞歸調用 80

6.4 變量的作用域 84

6.5 函數重載 85

6.6 內聯函數 86

6.7 變量的存儲類型 87

6.7.1 auto變量 87

6.7.2 static變量 88

6.7.3 register變量 89

6.7.4 extern變量 89

6.8 實踐與練習 90

第7章 數組、指針和引用 92

視頻講解:245分鐘

7.1 一維數組 92

7.1.1 一維數組的聲明 92

7.1.2 一維數組元素的引用 93

7.1.3 一維數組的初始化 93

7.2 二維數組 95

7.2.1 二維數組的聲明 95

7.2.2 二維數組元素的引用 95

7.2.3 二維數組的初始化 96

7.3 字符數組 97

7.3.1 字符數組的聲明與初始化 98

7.3.2 字符串 98

7.3.3 字符串連接函數strcat() 100

7.3.4 字符串復制函數strcpy() 101

7.3.5 字符串比較函數strcmp() 102

7.3.6 字符串長度函數strlen() 103

7.4 指針 103

7.4.1 變量、地址與指針 103

7.4.2 指針變量 104

7.4.3 指針運算符和取地址運算符 107

7.4.4 指針的自增、自減運算 108

7.4.5 指向空的指針與空類型指針 109

7.4.6 指向常量的指針與指針常量 110

7.5 指針與數組 111

7.5.1 數組的存儲方式 111

7.5.2 指針與一維數組 111

7.5.3 指針與二維數組 113

7.5.4 指針與字符數組 114

7.5.5 基於指針的字符串處理函數 115

7.6 指針在函數中的應用 119

7.6.1 傳遞地址 119

7.6.2 指向函數的指針 120

7.6.3 空指針調用函數 121

7.6.4 函數返回值為指針 121

7.7 指針數組 122

7.8 安全使用指針 124

7.8.1 內存分配 124

7.8.2 內存安全 126

7.9 引用 129

7.9.1 引用概述 129

7.9.2 使用引用傳遞函數參數 131

7.10 數組做函數參數 132

7.11 實踐與練習 134

第8章 構造數據類型 136

視頻講解:96分鐘

8.1 結構體 136

8.1.1 結構體的定義 136

8.1.2 結構體變量的聲明和初始化 137

8.1.3 結構體成員的引用 138

8.1.4 結構體的嵌套 139

8.1.5 結構體的大小 141

8.2 結構體與函數 141

8.2.1 結構體變量做函數參數 142

8.2.2 結構體指針做函數參數 142

8.3 結構體數組 143

8.3.1 結構體數組的聲明和初始化 143

8.3.2 指針訪問結構體數組 144

8.4 共享體 145

8.4.1 共享體的定義和使用 145

8.4.2 共享體的大小 146

8.4.3 共享體的特點 147

8.5 枚舉類型 147

8.5.1 枚舉類型的定義 147

8.5.2 枚舉變量 148

8.5.3 枚舉類型的運算 149

8.6 自定義數據類型 150

8.7 使用宏定義替換復雜的數據 151

8.8 實踐與練習 155

第2篇 面向對象

第9章 面向對象編程 158

視頻講解:39分鐘

9.1 面向對象概述 158

9.1.1 對象 158

9.1.2 類 158

9.1.3 封裝 159

9.1.4 繼承 159

9.1.5 多態 159

9.2 面向對象編程與面向過程編程 160

9.2.1 面向過程編程 160

9.2.2 面向對象編程 160

9.3 統一建模語言 161

9.3.1 UML概述 161

9.3.2 UML的結構 162

9.3.3 面向對象的建模 164

第10章 類和對象 165

視頻講解:197分鐘

10.1 C++類 165

10.1.1 類的聲明與定義 166

10.1.2 類的實現 166

10.1.3 對象的聲明和引用 169

10.2 構造函數 171

10.2.1 構造函數概述 171

10.2.2 復制構造函數 171

10.3 析構函數 173

10.4 類成員 174

10.4.1 訪問類成員 174

10.4.2 內聯成員函數 176

10.4.3 靜態類成員 176

10.4.4 隱藏的this指針 178

10.4.5 嵌套類 179

10.4.6 局部類 180

10.5 友元 180

10.5.1 友元概述 180

10.5.2 友元類 182

10.5.3 友元函數 183

10.6 命名空間 185

10.6.1 定義命名空間 185

10.6.2 在多個文件中定義命名空間 187

10.6.3 定義嵌套的命名空間 188

10.7 實踐與練習 189

第11章 繼承與派生 190

視頻講解:112分鐘

11.1 繼承 190

11.1.1 類的繼承 190

11.1.2 繼承後的可訪問性 192

11.1.3 構造函數的訪問順序 194

11.1.4 派生類中顯式調用基類構造函數 195

11.1.5 派生類屏蔽基類的同名成員函數 196

11.2 重載運算符 197

11.2.1 為什麽要重載運算符 197

11.2.2 重載運算符的形式與規則 199

11.2.3 重載運算符的運算 200

11.2.4 轉換運算符 202

11.3 多重繼承 203

11.3.1 多重繼承的定義 203

11.3.2 多重繼承的構造順序 204

11.4 多態 206

11.4.1 虛函數概述 206

11.4.2 利用虛函數實現動態綁定 206

11.4.3 虛繼承 208

11.5 抽象類 209

11.5.1 純虛函數和抽象類 209

11.5.2 實現抽象類中的成員函數 211

11.6 實踐與練習 213

第3篇 高級應用

第12章 模板 216

視頻講解:32分鐘

12.1 C++泛型編程和模板 216

12.1.1 認識C++泛型編程 216

12.1.2 強類型語言與C++模板 217

12.2 函數模板 218

12.2.1 函數模板的定義 218

12.2.2 函數模板的使用 219

12.2.3 重載函數模板 220

12.3 類模板 221

12.3.1 類模板的定義與聲明 221

12.3.2 簡單類模板 223

12.3.3 默認模板參數 223

12.3.4 為具體類型的參數提供默認值 224

12.3.5 有界數組模板 225

12.3.6 類模板的定製 226

12.4 鏈表類模板 229

12.4.1 鏈表的基本概念 229

12.4.2 設計單鏈表 230

12.4.3 鏈表類模板的使用 231

12.4.4 類模板的靜態數據成員 233

12.5 實踐與練習 235

第13章 標準模板庫 236

視頻講解:166分鐘

13.1 C++ STL基礎 236

13.1.1 認識STL 237

13.1.2 常見的數據結構 237

13.2 STL容器與迭代器 240

13.2.1 STL容器 240

13.2.2 STL迭代器 241

13.2.3 STL容器通用操作 243

13.3 序列式容器 243

13.3.1 序列式容器概述 243

13.3.2 array容器 244

13.3.3 vector容器 245

13.3.4 deque容器 248

13.3.5 list容器 250

13.3.6 forward_list容器 253

13.4 字符串容器 254

13.4.1 字符串容器概述 254

13.4.2 字符串容器常用函數 254

13.4.3 轉換為C語言風格的字符串 257

13.5 關聯式容器 257

13.5.1 關聯式容器概述 257

13.5.2 pair類模板 258

13.5.3 map容器 260

13.5.4 multimap容器 262

13.5.5 set容器 263

13.5.6 multiset容器 266

13.6 算法 267

13.6.1 非修正序列算法 267

13.6.2 修正序列算法 269

13.6.3 排序算法 272

13.6.4 數值算法 275

13.7 實踐與練習 279

第14章 RTTI與異常處理 280

視頻講解:18分鐘

14.1 RTTI 280

14.1.1 RTTI的定義 280

14.1.2 RTTI與引用 281

14.1.3 RTTI與多重繼承 282

14.1.4 RTTI映射語法 283

14.2 異常處理 285

14.2.1 拋出異常 285

14.2.2 捕獲異常 285

14.2.3 異常匹配 287

14.2.4 標準異常類 288

第15章 程序調試 290

視頻講解:21分鐘

15.1 程序錯誤的常見類型 290

15.2 調試工具的使用 292

15.2.1 創建調試程序 292

15.2.2 進入調試狀態 292

15.2.3 進行調試 293

15.2.4 變量的跟蹤與查看 294

15.2.5 調試的註意事項 295

第16章 文件操作 296

視頻講解:35分鐘

16.1 C++輸入/輸出流 296

16.1.1 C++中的流類庫 296

16.1.2 ios類中的枚舉常量 297

16.1.3 流的輸入/輸出 298

16.2 打開文件 299

16.3 讀寫文件 301

16.3.1 文件流 301

16.3.2 寫入文本文件 303

16.3.3 讀取文本文件 303

16.3.4 讀寫二進制文件 304

16.3.5 復制文件 305

16.4 文件指針的移動 306

16.4.1 文件錯誤與狀態 306

16.4.2 向文件中追加寫入 307

16.4.3 文件結尾的判斷 308

16.4.4 在指定位置讀寫文件 309

16.5 文件和流的關聯和分離 310

16.6 刪除文件 311

16.7 實踐與練習 312

第17章 網絡通信 313

視頻講解:20分鐘

17.1 TCP/IP協議 313

17.1.1 OSI參考模型 313

17.1.2 TCP/IP參考模型 314

17.1.3 IP地址 315

17.1.4 數據包格式 315

17.2 套接字 317

17.2.1 Winsock套接字 317

17.2.2 Winsock的使用 318

17.2.3 套接字阻塞模式 322

17.2.4 字節順序 322

17.2.5 面向連接流 323

17.2.6 面向無連接流 323

17.3 簡單協議通信 324

17.3.1 服務器端程序 324

17.3.2 客戶端程序 326

17.4 實踐與練習 328

第4篇 項目實戰

第18章 酒店客房管理系統 330

視頻講解:30分鐘

18.1 開發背景 330

18.2 系統設計 331

18.2.1 系統功能結構 331

18.2.2 業務流程圖 331

18.2.3 系統預覽 332

18.2.4 數據庫設計 333

18.3 主窗體設計 334

18.4 登錄模塊設計 339

18.4.1 登錄模塊技術分析 339

18.4.2 登錄模塊設計過程 340

18.5 客房預訂模塊設計 344

18.5.1 客房預訂模塊技術分析 344

18.5.2 客房預訂模塊實現過程 344

18.6 追加押金模塊設計 348

18.6.1 追加押金模塊技術分析 348

18.6.2 追加押金模塊實現過程 349

18.7 調房登記模塊設計 353

18.7.1 調房登記模塊技術分析 353

18.7.2 調房登記模塊實現過程 353

18.8 客房銷售報表模塊設計 358

18.8.1 客房銷售報表模塊技術分析 358

18.8.2 客房銷售報表模塊實現過程 358

18.9 項目文件清單 365

第19章 製作游戲外掛——植物大戰僵屍修改器 366

視頻講解:6分鐘

19.1 開發背景 366

19.2 系統功能設計 367

19.2.1 系統功能結構 367

19.2.2 業務流程圖 367

19.3 系統開發環境要求 368

19.4 修改器原理介紹 368

19.5 項目目錄結構預覽 370

19.6 修改器界面開發 371

19.6.1 新建項目 371

19.6.2 去除多餘控件 372

19.6.3 完成修改器主界面 373

19.6.4 添加“進程列表”對話框 374

19.7 修改陽光數量(內存搜索功能) 375

19.7.1 列出所有進程 375

19.7.2 打開游戲進程 376

19.7.3 搜索陽光數量位置 376

19.7.4 修改陽光數量 378

19.7.5 使用方法 378

19.8 註入游戲中的動態鏈接庫(DLL) 382

19.8.1 創建DLL項目 382

19.8.2 修改器界面介紹 384

19.8.3 註入DLL到游戲進程 384

19.9 修改器核心功能實現 385

19.9.1 按HOME鍵調出游戲修改器 386

19.9.2 任意修改陽光、金錢數量 387

19.9.3 調用種植、鏟除植物功能 388

19.9.4 自動收集陽光和金錢 389

19.9.5 僵屍全部出動 390

19.9.6 忽略地形,重疊種植 391

19.9.7 植物種植無冷卻時間 392

19.10 開發總結 393