21天學通C++(第5版)

21天學通C++(第5版)

《21天學通C++(第5版)》

極具影響力原創計算機編程圖書,叢書暢銷10年!程式設計師案頭手冊,只需21天輕鬆學通編程技能!

劉蕾 著

ISBN 978-7-121-33632-4

2018年7月出版

定價:59.80元

420頁

16開

編輯推薦

√ 基礎知識→核心技術→典型實例→綜合練習→項目案例,輕鬆上手與提高。全面掌握C++只需21天!

√ 細緻體貼的知識點講解;

√ 理論聯繫實際的學習模式;

√ 239個典型案例、1個項目案例、44個練習題、61個面試題

√ 一線開發人員全程貼心講解,輕鬆上手與提高。

內容提要

《21天學通C++(第5版)》從初學者的角度較全面地介紹了C++的相關知識,較系統地介紹了C++語言的基礎內容。《21天學通C++(第5版)》包括6 篇共21 章的內容。其中,第1 篇是C++數據表達篇,包括C++入門、變數和數據類型、運算符和 表達式以及程式控制結構等;第2 篇是C++面向過程設計篇,包括函式、編譯預處理、數組、指針和構 造數據類型等內容;第3 篇是C++面向對象編程篇,主要包括類和對象、繼承、多態、運算符重載和輸 入/輸出流等內容;第4 篇主要介紹了C++高級特性,內容包括檔案、命名空間和引用與記憶體管理;第5 篇的內容主要是C++編程實踐,主要分析了標準模板庫STL、模板與C++標準庫和異常處理等;最後一篇結合學生成績管理系統開發實例,講解如何使用C++進行實際開發。《21天學通C++(第5版)》適合沒有編程基礎的C++語言初學者作為入門教程,也可作為大中專院校師生和培訓班的教材, 對於C++語言開發的愛好者,《21天學通C++(第5版)》也有較大的參考價值。

目錄

第1 篇 C++數據表達篇

第1 章 C++入門 1

1.1 C++概述 1

1.1.1 C++的歷史沿革 1

1.1.2 C++與面向對象 1

1.1.3 從C 語言到C++ 2

1.2 程式設計方法 3

1.2.1 結構化程式設計 3

1.2.2 面向對象程式設計 4

1.2.3 程式設計方法比較 4

1.3 C++開發環境——Visual C++ 6.0 5

1.3.1 工作區 .. 5

1.3.2 編輯區(Editor Area) 6

1.3.3 輸出視窗(Output Window) 6

1.3.4 選單欄、工具列、狀態欄 7

1.4 第一個C++程式——Hello World 7

1.4.1 創建源程式 7

1.4.2 編譯連線 9

1.4.3 調試運行 9

1.5 C++源程式組成元素 10

1.5.1 基本組成 10

1.5.2 基本符號 11

1.5.3 標識符 11

1.5.4 保留字 11

1.5.5 分隔設定 12

1.6 小結 12

1.7 習題 12

第2 章 變數和數據類型 16

2.1 常量 16

2.1.1 聲明常量 16

2.1.2 常量的套用 17

2.2 變數 19

2.2.1 聲明變數 19

2.2.2 變數的命名規則 .. 19

2.2.3 變數的作用範圍 20

2.2.4 變數的套用 .. 21

2.3 基本數據類型 .. 22

2.3.1 整型 23

2.3.2 字元型 24

2.3.3 浮點型 26

2.3.4 布爾型 26

2.4 類型轉換 27

2.4.1 隱式轉換 27

2.4.2 顯式轉換 28

2.5 小結 29

2.6 習題 29

第3 章 運算符和表達式 32

3.1 運算符 .. 32

3.1.1 算術運算符 32

3.1.2 賦值運算符 34

3.1.3 關係運算符 35

3.1.4 邏輯運算符 35

3.1.5 條件運算符 36

3.1.6 逗號運算符 37

3.1.7 位運算符 .. 37

3.1.8 sizeof 運算符 38

3.1.9 運算符的優先權 38

3.2 表達式 .. 39

3.2.1 算術表達式 40

3.2.2 關係表達式 40

3.2.3 邏輯表達式 .. 41

3.2.4 條件表達式 42

3.2.5 賦值表達式 43

3.2.6 逗號表達式 .. 43

3.3 語句 44

3.3.1 語句中的空格 44

3.3.2 空語句 45

3.3.3 聲明語句 45

3.3.4 賦值語句 46

3.4 小結 46

3.5 習題 46

第4 章 程式控制結構 50

4.1 順序結構 50

4.1.1 表達式語句 50

4.1.2 輸入語句 51

4.1.3 輸出語句 51

4.1.4 格式控制符 .. 52

4.1.5 套用示例 55

4.2 選擇結構 56

4.2.1 if 語句 56

4.2.2 ifelse 語句 57

4.2.3 多重if…else 語句 .. 58

4.2.4 switch 語句 60

4.2.5 套用示例 62

4.3 循環結構 64

4.3.1 for 語句 64

4.3.2 while 語句 65

4.3.3 dowhile 語句 66

4.3.4 多重循環 66

4.3.5 套用示例 68

4.4 轉向語句 68

4.5 小結 70

4.6 習題 70

第2 篇 C++面向過程設計篇

第5 章 函式 74

5.1 函式簡介 74

5.1.1 函式概述 .. 74

5.1.2 定義函式 .. 75

5.1.3 套用示例 76

5.2 函式參數及原型 77

5.2.1 函式的參數及返回值 .. 77

5.2.2 函式原型 78

5.2.3 main()函式 78

5.2.4 帶參數的main()函式 80

5.3 調用函式 81

5.3.1 函式調用格式 81

5.3.2 傳值調用 .. 82

5.3.3 引用調用 83

5.3.4 嵌套調用 84

5.3.5 遞歸調用 84

5.3.6 帶默認形參值的函式 86

5.4 變數的作用域 .. 86

5.4.1 局部變數 87

5.4.2 全局變數 88

5.5 函式的作用域 .. 89

5.6 函式重載 90

5.6.1 函式重載的定義 91

5.6.2 參數類型不同的函式重載 91

5.6.3 參數個數不同的重載函式 92

5.7 小結 93

5.8 習題 93

第6 章 編譯預處理 96

6.1 預處理命令 96

6.2 宏 96

6.2.1 宏概述 96

6.2.2 不帶參數的宏定義 .. 97

6.2.3 取消宏 98

6.2.4 宏嵌套 100

6.2.5 帶參數的宏定義 100

6.2.6 內聯函式 104

6.2.7 宏與函式的區別 105

6.3 檔案包含 .. 106

6.3.1 #include 命令 106

6.3.2 合理使用檔案包含 107

6.4 條件編譯 .. 108

6.4.1 #ifdef 形式 108

6.4.2 #ifndef 形式 .. 110

6.4.3 #if 形式 110

6.5 其他命令 111

6.5.1 #error 命令 111

6.5.2 #line 命令 .. 112

6.6 小結 112

6.7 習題 112

第7 章 數組 115

7.1 聲明數組 .. 115

7.1.1 聲明一維數組 115

7.1.2 聲明多維數組 116

7.2 引用數組 .. 117

7.2.1 引用一維數組 117

7.2.2 引用多維數組 118

7.3 數組的賦值 119

7.3.1 初始化數組 .. 119

7.3.2 通過賦值表達式賦值 121

7.3.3 通過輸入語句賦值 122

7.3.4 通過循環語句賦值 .. 122

7.3.5 多維數組的賦值 124

7.4 字元串 124

7.4.1 傳統字元串 .. 125

7.4.2 字元數組 .. 127

7.5 數組與函式 128

7.6 數組套用 .. 130

7.6.1 順序查找 130

7.6.2 折半查找 131

7.6.3 排序 .. 134

7.7 小結 136

7.8 習題 136

第8 章 指針 139

8.1 指針概述 .. 139

8.1.1 指針是什麼 139

8.1.2 定義指針 140

8.1.3 指針的初始化 140

8.2 指針的運算 142

8.2.1 取地址與取值運算 142

8.2.2 指針的算術運算 143

8.2.3 指針的關係運算 145

8.2.4 指針的賦值運算 146

8.2.5 void 指針和const 指針 146

8.3 指針與數組 148

8.3.1 訪問數組元素的方法 148

8.3.2 多維數組元素的訪問 150

8.3.3 數組指針與指針數組 151

8.4 指針與函式 152

8.4.1 指針作為函式參數 152

8.4.2 指針型函式 154

8.4.3 函式指針 155

8.5 指針與字元串 156

8.6 二級指針 .. 157

8.7 小結 158

8.8 習題 159

第9 章 構造數據類型 162

9.1 結構體 162

9.1.1 結構體概述 162

9.1.2 結構體類型說明 163

9.1.3 定義結構體類型變數 164

9.1.4 初始化結構體變數 165

9.1.5 引用結構體成員變數 167

9.1.6 結構體作為函式參數 169

9.2 共用體 170

9.2.1 共用體類型說明 170

9.2.2 定義共用體類型變數 171

9.2.3 引用共用體成員變數 171

9.3 枚舉 173

9.3.1 定義枚舉類型 173

9.3.2 定義枚舉類型變數 175

9.3.3 引用枚舉類型變數 176

9.4 類型重定義typedef 177

9.5 位域 179

9.5.1 定義位域變數 179

9.5.2 使用位域 180

9.6 小結 181

9.7 習題 182

第3 篇 C++面向對象編程篇

第10 章 類和對象 185

10.1 類 185

10.1.1 什麼是類 185

10.1.2 從結構到類 186

10.1.3 類的聲明 188

10.1.4 類的訪問控制 189

10.1.5 類的定義 191

10.2 對象 .. 193

10.2.1 對象概述 193

10.2.2 對象數組 194

10.3 構造函式 196

10.3.1 構造函式的概念 196

10.3.2 構造函式的聲明和定義 196

10.3.3 構造函式的調用 198

10.3.4 不帶參數的構造函式 198

10.3.5 帶有默認參數的構造函式 199

10.3.6 構造函式的重載 201

10.4 拷貝構造函式 202

10.4.1 定義拷貝構造函式 202

10.4.2 調用拷貝構造函式 203

10.4.3 默認拷貝構造函式 .. 205

10.5 析構函式 206

10.6 友元 .. 207

10.6.1 友元函式 207

10.6.2 友元成員 209

10.6.3 友元類 .. 210

10.7 小結 .. 212

10.8 習題 .. 212

第11 章 繼承 .. 216

11.1 繼承與派生 .. 216

11.1.1 繼承與派生概述 216

11.1.2 聲明派生類 217

11.2 訪問控制 217

11.2.1 公有繼承 218

11.2.2 私有派生 220

11.2.3 保護繼承 221

11.3 派生類的構造函式和析構函式 225

11.3.1 執行順序和構建原則 225

11.3.2 派生類的構造函式 225

11.3.3 派生類析構函式的構建 226

11.4 多重繼承 228

11.4.1 二義性問題 228

11.4.2 聲明多重繼承 230

11.4.3 多重繼承的構造函式和析構函式 .. 232

11.5 虛基類 234

11.5.1 虛基類的引入 234

11.5.2 定義虛基類 235

11.5.3 虛基類的構造函式和初始化 237

11.6 小結 .. 238

11.7 習題 .. 238

第12 多態 243

12.1 多態簡介 243

12.1.1 什麼是多態 243

12.1.2 多態的作用 244

12.1.3 多態的引入 244

12.2 函式重載 246

12.3 虛函式 247

12.3.1 虛函式的引入 247

12.3.2 定義虛函式 249

12.3.3 使用虛函式 250

12.3.4 多重繼承和虛函式 .. 251

12.3.5 使用虛函式的注意事項 253

12.4 抽象類 253

12.4.1 純虛函式 253

12.4.2 抽象類 255

12.5 小結 .. 256

12.6 習題 .. 257

第13 章 運算符重載 .. 260

13.1 運算符重載簡介 260

13.1.1 運算符重載的定義 260

13.1.2 運算符重載的特點 261

13.1.3 運算符重載的規則 262

13.2 運算符重載的形式 .. 263

13.2.1 重載為類的成員函式 263

13.2.2 雙目運算符重載為成員函式 263

13.2.3 單目運算符重載為成員函式 264

13.2.4 運算符重載為類的友元函式 266

13.2.5 雙目運算符重載為友元函式 266

13.2.6 單目運算符重載為友元函式 267

13.2.7 成員運算符函式與友元運算符函式的比較 269

13.3 特殊運算符的重載 .. 269

13.3.1 “++”和“”的重載 269

13.3.2 賦值運算符“=”的重載 271

13.3.3 下標運算符“[ ]”的重載 273

13.4 類類型轉換 .. 274

13.5 小結 .. 276

13.6 習題 276

第14 章 輸入/輸出流 280

14.1 輸入/輸出流的引入 280

14.1.1 printf 與scanf 的缺陷 280

14.1.2 輸入/輸出流簡介 281

14.1.3 輸入/輸出流類層次 282

14.2 標準輸入/輸出流 283

14.2.1 標準輸出流對象 283

14.2.2 標準輸入流對象 284

14.2.3 標準錯誤輸出流對象 285

14.3 輸入/輸出流成員函式 286

14.3.1 get()函式:輸出字元串 286

14.3.2 getline()函式:獲取字元串 288

14.4 輸入/輸出的格式控制 288

14.4.1 用ios 類的成員函式進行格式控制 288

14.4.2 使用格式控制符進行格式控制 291

14.5 用戶自定義數據類型的輸入/輸出 293

14.5.1 重載輸出運算符“<<” 293

14.5.2 重載輸入運算符“>>” 294

14.6 小結 .. 296

14.7 習題 296

第4 篇 C++高級特性篇

第15 章 檔案 .. 299

15.1 檔案和流 299

15.1.1 檔案概述 299

15.1.2 檔案流類 300

15.2 檔案的打開與關閉 301

15.2.1 打開檔案 301

15.2.2 關閉檔案 303

15.3 檔案的順序讀寫 304

15.3.1 讀寫文本檔案 304

15.3.2 文本檔案套用示例 305

15.3.3 二進制檔案概述 307

15.3.4 讀寫二進制檔案 307

15.4 檔案的隨機讀寫 310

15.5 小結 .. 312

15.6 習題 .. 312

第16 章 命名空間 315

16.1 命名空間簡介 315

16.1.1 什麼是命名空間 315

16.1.2 定義命名空間 316

16.2 使用命名空間 318

16.2.1 使用作用域運算符引用成員 318

16.2.2 使用using 指令 319

16.2.3 使用using 聲明 320

16.2.4 using 指令與using 聲明的比較 321

16.3 類的作用域 321

16.3.1 靜態數據成員 321

16.3.2 靜態成員函式 323

16.4 作用域 324

16.4.1 局部作用域 324

16.4.2 全局作用域 326

16.4.3 作用域嵌套 327

16.5 this 指針 328

16.6 小結 330

16.7 習題 330

第17 章 引用與記憶體管理 333

17.1 引用 333

17.1.1 引用概述 333

17.1.2 引用的使用 334

17.2 引用的操作 335

17.2.1 引用作為函式參數 .. 335

17.2.2 引用作為返回值 336

17.3 動態記憶體分配 337

17.3.1 申請動態記憶體 337

17.3.2 釋放空間 338

17.3.3 malloc 和free 庫函式 340

17.4 const 引用 341

17.5 指針與引用的區別 343

17.6 小結 344

17.7 習題 344

第5 篇 C++編程實踐篇

第18 章 標準模板庫STL 347

18.1 標準模板庫 347

18.1.1 STL 概述 347

18.1.2 STL 的引入 347

18.1.3 STL 的組成 348

18.2 算法 349

18.3 容器 351

18.3.1 什麼是容器 351

18.3.2 向量 351

18.3.3 列表 353

18.3.4 集合 355

18.3.5 雙端佇列 356

18.3.6 棧 357

18.3.7 映射和多重映射 358

18.4 疊代器 359

18.5 小結 361

18.6 習題 361

第19 章 模板與C++標準庫 364

19.1 模板概述 .. 364

19.1.1 模板簡介 364

19.1.2 模板的引入 365

19.2 函式模板 .. 366

19.2.1 定義函式模板 366

19.2.2 生成函式模板 367

19.2.3 函式模板的異常處理 368

19.3 類模板 369

19.3.1 定義類模板 369

19.3.2 模板類 370

19.4 C++標準庫概述 372

19.5 字元串庫 .. 373

19.5.1 讀寫字元串 373

19.5.2 字元串賦值 373

19.5.3 字元串比較 .. 374

19.5.4 字元串長度和空字元串 375

19.6 小結 377

19.7 習題 .. 377

第20 章 異常處理 380

20.1 錯誤與異常 .. 380

20.1.1 什麼是異常 380

20.1.2 異常處理的基本思想 380

20.2 異常處理的實現 382

20.2.1 使用try/catch 捕獲異常 382

20.2.2 使用throw 拋出異常 383

20.2.3 套用示例 384

20.3 類和結構的異常處理 385

20.3.1 異常處理中的構造和析構 .. 386

20.3.2 處理結構類型的異常 387

20.4 異常處理機制 388

20.5 小結 .. 390

20.6 習題 .. 390

第6 篇 實例篇

第21 章 簡單的學生成績管理系統開發實例 393

21.1 需求分析 393

21.2 總體設計 393

21.3 功能模組的實現 394

21.3.1 成績錄入模組 .. 395

21.3.2 成績統計模組 395

21.3.3 成績排名模組 396

21.3.4 成績查詢模組 398

21.3.5 輸出模組 399

21.4 系統集成 399

21.5 系統實現 401

21.5.1 結構和變數定義部分 402

21.5.2 功能函式定義部分 .. 403

21.5.3 主函式部分 404

21.6 小結 .. 406

作者簡介

劉蕾,長期從事C、VC程式設計語言的教學工作,並使用C和VC開發了大量的程式,主要有:學校食堂IC卡管理系統;學校信息管理系統(使用VC和MS SQL 2000);達州軍分區點對點視頻會議系統;市民政局區域網路即時通信軟體;健身俱樂部會員管理系統;某鑽探公司圖形矢量化系統。

前言

千里之行,始於足下!

——老子

“21天學編程系列”自2009年1月上市以來一直受到廣大讀者的青睞。該系列中的大部分圖書從一上市就登上了編程類圖書銷售排行榜的前列,很多大中專院校也將該系列中的一些圖書作為教材使用,目前這些圖書已經多次印刷、改版。可以說,“21天學編程系列”是自2009年以來國內原創計算機編程圖書頗具影響力的品牌之一。

為了使該系列圖書能緊跟技術和教學的發展,更加適合讀者學習和學校教學,我們結合最新技術和讀者的建議,對該系列圖書進行了改版(即第5 版)。本書便是該系列中的C++分冊。

本書有何特色

1.細緻體貼的講解

為了讓讀者更快上手,本書特別設計了適合初學者的學習方式,用準確的語言總結概念、用直觀的圖示演示過程、用詳細的注釋解釋代碼、用形象的比方幫助記憶。

1 知識點介紹 準確、清晰是其顯著特點,一般放在每一節開始位置,讓零基礎的讀者了解相關概念,順利入門。

2 範例 書中出現的完整實例,以章節順序編號,便於檢索和循序漸進地學習、實踐,放在每節知識點介紹之後。

3 代碼清單 與範例編號對應,層次清楚、語句簡潔、注釋豐富,體現了代碼優美的原則,有利於讀者養成良好的代碼編寫習慣。對於大段程式,均在每行代碼前設定編號,便於學習。

4 運行結果 給出範例運行結果和對應圖示,幫助讀者更直觀地理解範例代碼。

5 範例解析 對範例代碼中的關鍵代碼行進行逐一解釋,有助於讀者掌握相關概念和知識。

6 貼心的提示 為了便於讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定如下。

 提示:通常是一些貼心的提醒,用於加深讀者印象,或提供建議、提出解決問題的方法。

 注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。

 警告:對操作不當或理解偏差將會造成的災難性後果給出警示,以加深讀者印象。

7 習題 每章最後提供專門的測試習題,供讀者檢驗所學知識是否牢固掌握。

8 微課 使用手機App(例如微信)掃描二維碼,可線上看配套教學微課。

2.實用超值的配套資源

為了幫助讀者比較直觀地學習,本書提供配套資源,內容包括多媒體視頻、電子教案(PPT)和實例原始碼等。

◆多媒體視頻

本書配有長達12 小時教學視頻,講解關鍵知識點界面操作和書中的一些綜合練習題。作者親自配音、演示,手把手教讀者使用。

◆電子教案(PPT)

本書可以作為高校相關課程的教材或課外輔導書,所以作者特別為本書製作了電子教案PPT),以方便老師教學使用。

◆職場面試法寶

本書附贈“職場面試法寶”,含常見的職場經典面試題及解答。

3.提供完善的技術支持

推薦的學習計畫表

本書作者在長期從事相關培訓或教學實踐過程中,歸納了最適合初學者的學習模式,並參考了多位專家的意見,為讀者總結了合理的學習時間分配方式,列表如下。

第1周

第1天

了解C++的歷史及其特點

掌握C++編譯環境及第一個C++程式

熟悉C++源程式的基本組成和組成元素

第2天

掌握C++中的常量、變數及其定義

掌握C++中數據類型及其轉換

熟練掌握在C++程式中如何聲明及使用常量、變數和數據類型

第3天

掌握C++支持的各種運算符及套用

掌握C++支持的由各種運算符和常量變數構成的表達式、語句及其套用

第4天

了解C++的面向過程的結構化設計方法

熟練掌握C++支持的順序結構、選擇結構和循環結構

掌握轉向語句的功能及其使用

第5天

掌握C++中函式的聲明與定義

熟練掌握函式的參數、原型和返回值,以及在程式中調用函式了解C++中函式的重載

第6天

了解預處理命令的功能

掌握宏定義及其使用

掌握檔案包含的使用

掌握常用的編譯預處理命令

第7天

了解數組的概念

熟練掌握一維和多維數組的聲明與引用

掌握數組的多種賦值方法

熟悉數組在實際程式中的套用

第2周

第8天

了解指針的概念

熟練掌握指針的定義和運算

掌握指針與數組、函式和字元串的運算

掌握指向指針的使用

第9天

掌握結構體、共用體和枚舉類型的定義和使用

了解類型重定義符的使用

了解位域的套用

第10天

掌握C++中類和對象的概念

掌握C++中類的構造函式、析構函式的定義和套用

掌握友元的概念和相關套用

第11天

了解C++中繼承與派生的概念

掌握C++支持的派生方式

掌握派生類的構造函式和析構函式的定義和使用

掌握多重繼承和虛基類的套用

第12天

理解多態的概念

熟練掌握C++中多態的實現方法

熟練掌握虛函式的定義及其使用

掌握純虛函式和抽象類

第13天

理解運算符重載的概念及定義

掌握運算符重載的兩種形式及其實現

掌握特殊運算符的重載

第14天

了解C++中引入標準輸入/輸出流的原因

掌握常用標準輸入/輸出流對象

掌握輸入/輸出流成員函式的使用和格式控制

第3周

第15天

了解檔案和流的概念

掌握檔案的打開與關閉操作

掌握順序檔案和隨機檔案的讀寫及其套用

第16天

理解命名空間的作用

掌握命名空間的使用方法

掌握類的作用域及this 指針的套用方法

第17天

理解引用的概念

掌握引用在實際程式中的使用和操作及其與指針的區別

掌握動態記憶體分配的方法

第18天

了解標準模板庫STL 的基本概念及其在C++程式設計中的作用

掌握常用的STL 容器的類別及其相關套用

掌握算法和疊代器的使用

第19天

理解模板的概念

掌握函式模板和類模板的定義和生成

理解C++標準庫及字元串庫

第20天

了解錯誤與異常的概念及其處理基本原則

掌握實際程式中實現異常處理的方法

了解異常處理機制

第21天

了解開發一個應用程式的軟體工程生命周期

掌握使用C++開發具體應用程式的流程

掌握使用Visual C++ 6.0 的控制台程式開發C++應用程式

本書適合哪些讀者閱讀

本書非常適合以下幾類人員閱讀:

◆從未接觸過C++編程,但對C++有興趣的自學人員;

◆各大中專院校的在校學生和相關授課老師;

◆了解一些C++,但還需要進一步學習的人員;

◆在某些需要使用C++編程的特殊領域的工作人員;

◆其他編程愛好者。

本書作者

本書主要由劉蕾編寫,參與編寫的還有:張昆、張友、趙桂芹、張金霞、張增強、劉桂珍、陳冠軍、魏春、張燕、孟春燕、頊宇峰、李楊坡。由於水平有限,書中難免存在疏漏和不足之處,懇請廣大讀者和專家批評、指正。

相關詞條

熱門詞條

聯絡我們