內容簡介
本書由淺入深、循序漸進地講解如何使用C++開發環境。本書採用理論與實踐相結合的寫作方法,不僅使讀者對C++的語法有全面的了解,而且能讓讀者從實踐中得到清晰的思路。
本書全面地講述了C++語言中的各個知識點,共包括四篇,內容包括C++概述、C++開發利器大集合、C++初次編程、C++的數據類型、運算符和表達式、分解C++——語句、數組的使用、靈活的指針、函式的使用、變數的生存範圍、讓數據到文本中去——檔案的操作、預編譯、字元串的處理、類和對象、財富的積累——繼承、讓程式變得更短——模板、代碼的工廠——虛擬和多態、讓系統變得更健康——異常處理等內容。在本書的每一章中都對相應的知識進行了串燒,有利於學習者系統地複習所學知識。
本書配有DVD光碟1張,內容為本書的實例檔案和作者專門為本書錄製的全程多媒體語音教學視頻。
本書不僅適合C++語言的初學者,還適合C++語言編程愛好者和有志於使用C++語言進行編程的程式設計師作為參考和學習用書使用。
前言
如果沒有學習C語言,那就直接從C++開始吧!
——Bjarne Stroustrup(C++之父)
C/C++語言仍舊是使用範圍最多的計算機程式語言,使用C/C++語言開發出來的軟體遍及到生活中的各個領域,且具有較高的性能和穩定性。相比較其他語言而言,其優勢更加明顯,例如,同樣在Windows操作環境下,同時打開使用C++開發的軟體和使用Java開發的軟體,前者的啟動速度明顯高於後者。
在剛開始學習C++語言的時候,有些學習者很難找到一本合適的入門書籍,學習過程中充滿著迷惑,往往不知道該怎么入手。本書在編寫過程中充分考慮了這種情況,使讀者在掌握理論知識的同時,實際的編程能力也會得到很大提高,本書的每個例子都進行了詳細解釋,並在程式後面附上了運行結果,真正實現了理論與實際相結合的學習方法。
本書的特點
C++語言的流行,使越來越多的人加入到C++學習的大軍中,但是在實際的學習過程中很難找到一本真正適合C++初學者的教材,因此,市場上急需一本能夠真正為初學者提供的參考書,從而適合各種類型的人員進行C++的學習。作者在經過了深思熟慮之後,結合實際的情況對書本進行了編排,其特點如下:
從零開始,即使是沒有任何編程基礎的各層次人員都可以進行流暢的學習。
內容翔實,基本覆蓋了C++程式語言的各個知識點,為學習者以後的深入學習奠定了基礎。
結合實際,從基本出發,對每一個程式都進行了實際的編程運行,保證了程式的正確性和可讀性。
語言通俗易懂,使枯燥的理論學習更加易於接受。
知識點介紹 準確、清晰是其顯著特點,一般放在每一節開始位置,讓零基礎的讀者了解相關概念,順利入門。
實例 書中出現的完整實例,以章節順序編號,便於檢索和循序漸進地學習、實踐,放在每節知識點介紹之後。
實例代碼 與實例編號對應,層次清楚、語句簡潔、注釋豐富,體現了代碼優美的原則,有利於讀者養成良好的代碼編寫習慣。對於大段程式,均在每行代碼前設定編號便於學習。
運行結果 對實例給出運行結果和對應圖示,幫助讀者更直觀地理解實例代碼。
習題 每章最後提供專門的測試習題,供讀者檢驗所學知識是否牢固掌握。
貼心的提示 為了便於讀者閱讀,全書還穿插著一些技巧、提示等小貼士,體例約定如下:
提示:通常是一些貼心的提醒,讓讀者加深印象或提供建議,或者解決問題的方法。
注意:提出學習過程中需要特別注意的一些知識點和內容,或者相關信息。
警告:對操作不當或理解偏差將會造成的災難性後果做警示,以加深讀者印象。
經作者多年的培訓和授課證明,以上講解方式是最適合初學者學習的方式,讀者按照這種方式,會非常輕鬆、順利地掌握本書知識。
2.實用超值的DVD光碟
為了幫助讀者比較直觀地學習,本書附贈DVD光碟,內容包括多媒體視頻、電子教案(PPT)和實例原始碼等。
 多媒體視頻
配有長達18小時手把手教學視頻,講解關鍵知識點界面操作和書中的一些綜合練習題。作者親自配音、演示,手把手教會讀者使用。
 電子教案(PPT)
本書可以作為高校相關課程的教材或課外輔導書,所以筆者特別為本書製作了電子教案(PPT),以方便老師教學使用。
3.提供完善的技術支持
本書提供了論壇,讀者可以在上面提問交流。另外,論壇上還有一些小的教程、視頻動畫和各種技術文章,可幫助讀者提高開發水平。
4.豐富的額外素材下載
相關的開發素材檔案。
適合閱讀本書的讀者
想從事編程,且對C++有興趣的人
各大中專院校的在校學生和相關授課老師
了解C++,但還需要進一步學習的人
其他編程愛好者
本書作者
本書主要由古超和瀋陽市電子技術學校的趙丹編寫。其他參與本書編寫的人員有昊燃、劉永純、曾光、張雙、朱照華、黃永湛、孟祥嵩、張賀軍、李勇、關濤、王岩、李曉白、魏星,在此一併表示感謝!
目 錄
第1篇 C++入門
第1章 C++概述( 教學視頻:49分鐘) 15
1.1 C++與C 15
1.1.1 C語言 15
1.1.2 C++ 17
1.1.3 C和C++比較 17
1.2 程式和算法 19
1.2.1 程式 19
1.2.2 算法 19
1.3 程式設計方法 21
1.3.1 面向過程的程式設計 21
1.3.2 面向對象的程式設計 22
1.4 C++編程風格 24
1.5 C++編程的過程 25
1.6 本章小結 25
1.7 習題 26
第2章 C++開發利器大集合( 教學視頻:31分鐘) 27
2.1 Visual C++與集成開發環境 27
2.1.1 Visual C++概述 27
2.1.2 Visual C++ 6.0集成開發環境介紹 27
2.1.3 設定個性化的開發環境 32
2.1.4 創建一個簡單的程式 33
2.2 C++ Builder 34
2.2.1 C++ Builder IDE(集成開發環境)簡介 34
2.2.2 創建一個簡單的程式 35
2.3 Linux/UNIX下的C++開發工具 35
2.4 本章小結 36
2.5 習題 36
第3章 C++初次編程( 教學視頻:39分鐘) 37
3.1 初識輸入與輸出 37
3.2注釋符38
3.3 控制語句簡介 39
3.3.1 if語句 39
3.3.2 for語句 40
3.3.3 while語句 41
3.4 類 42
3.4.1 創建一個簡單的類 42
3.4.2 初識成員函式 43
3.5 一個簡單的C++程式 45
3.6 本章小結 47
3.7 習題 47
第2篇 C++的利器
第4章 C++的數據類型( 教學視頻:120分鐘) 48
4.1 基本內置類型48
4.1.1 整型 48
4.1.2 浮點型 50
4.2 常量 51
4.2.1 整數類型字面值常量 51
4.2.2 布爾型和字元型字面值常量 51
4.2.3 浮點型字面值常量 51
4.2.4 字元串字面值常量 51
4.3 變數 52
4.3.1 什麼是變數 52
4.3.2 變數名的確定 53
4.3.3 變數的聲明與定義 53
4.3.4 初始化變數 53
4.4 枚舉類型 54
4.5 自定義類型typedef 55
4.6 引用 55
4.7 const限定符 56
4.8 類類型 57
4.9 標準庫類型 58
4.9.1 string類型 58
4.9.2 順序容器類型 60
4.9.3 關聯容器類型 62
4.10 標準I/O庫類型 64
4.10.1 輸入輸出流 64
4.10.2 字元串流 65
4.11 本章小結 66
4.12 習題 66
第5章 運算符和表達式( 教學視頻:64分鐘) 67
5.1 算術運算符與算術表達式 67
5.1.1 算術運算符 67
5.1.2 算術表達式 68
5.2 關係運算符與關係表達式 69
5.2.1 關係運算符 69
5.2.2 關係表達式 70
5.3 邏輯運算符與邏輯表達式 70
5.3.1 邏輯運算符 70
5.3.2 邏輯表達式 71
5.4 賦值運算符與賦值表達式 72
5.4.1 賦值運算符 72
5.4.2 賦值表達式 73
5.5 條件運算符與條件表達式 74
5.6 逗號運算符與逗號表達式 74
5.7 自增和自減運算符及其表達式 75
5.8 sizeof運算符 76
5.9 箭頭運算符與點運算符 77
5.10 位運算符及其表達式 78
5.11 new和delete表達式 79
5.12 複合表達式 80
5.13 本章小結 82
5.14 習題 82
第6章 分解C++——語句( 教學視頻:63分鐘) 83
6.1 簡單語句 83
6.2 聲明語句 84
6.3 複合語句 85
6.4 語句的作用域 86
6.5 分支語句 86
6.5.1 條件語句 86
6.5.2 switch語句 91
6.6 循環語句 93
6.6.1 for語句 93
6.6.2 while語句 95
6.6.3 do…while語句 96
6.6.4嵌套循環語句 97
6.6.5 break語句 98
6.6.6 continue語句 100
6.6.7 goto語句 100
6.6.8 return語句 101
6.7 綜合套用 102
6.8 本章小結 108
6.9 習題 108
第7章 數組的使用( 教學視頻:36分鐘) 109
7.1 數組的概念 109
7.2 一維數組 109
7.2.1 一維數組的定義 109
7.2.2 一維數組的初始化 110
7.2.3 一維數組元素的訪問 112
7.2.4 字元數組 112
7.3 多維數組 113
7.3.1 多維數組的定義 114
7.3.2 多維數組的初始化 114
7.3.3 多維數組元素的訪問 116
7.4 數組的套用 117
7.5 本章小結 125
7.6 習題 125
第8章 靈活的指針( 教學視頻:79分鐘) 126
8.1 什麼是指針 126
8.2 指針的定義和初始化 128
8.2.1 指針變數的定義 128
8.2.2 獲得地址並對指針變數進行初始化 129
8.2.3 指針變數的使用 130
8.2.4 指針與引用 132
8.3 指針的操作 133
8.4 指向指針的指針 135
8.5 使用指針訪問數組元素 136
8.5.1 指向數組元素的指針 136
8.5.2 一維數組與指針 137
8.5.3 多維數組與指針 140
8.6 指針和const限定符 144
8.6.1 指向const對象的指針 144
8.6.2const指針145
8.7 指針和字元串 145
8.8 本章小結 146
8.9 習題 146
第9章 函式的使用( 教學視頻:81分鐘) 147
9.1 函式的概念 147
9.2 函式的聲明 148
9.3 函式的定義 150
9.3.1 不同函式類型的定義形式 150
9.3.2 函式的返回值 152
9.3.3 函式的形參表153
9.4 函式的參數傳遞 154
9.4.1形式參數與實際參數 154
9.4.2 非引用形參 155
9.4.3 引用形參 155
9.5 函式的調用 158
9.6 函式的嵌套調用 158
9.7 內聯函式 159
9.8 變數的存儲方式 161
9.9 指針和函式 161
9.9.1 指針參數 161
9.9.2 指針作為返回值 162
9.10 函式的重載 164
9.10.1 重載與作用域 165
9.10.2 默認參數 166
9.10.3 參數類型上不同的重載函式166
9.10.4 參數個數上不同的重載函式 167
9.11 本章小結 168
9.12 習題 168
第10章 變數的生存範圍( 教學視頻:26分鐘) 169
10.1 局部作用域 169
10.2 全局作用域 170
10.3 變數的存儲類型 171
10.3.1 自動存儲類型 171
10.3.2 靜態存儲變數 171
10.3.3 暫存器存儲類型 172
10.4 定義和使用命名空間 173
10.5 本章小結 176
10.6 習題 176
第11章 讓數據到文本中去——檔案的操作( 教學視頻:42分鐘) 177
11.1 檔案的概述 177
11.2 I/O流的描述 177
11.3 檔案的打開模式 178
11.4 打開一個檔案 178
11.5 向檔案中寫入數據 181
11.5.1 文本檔案的寫入方法 181
11.5.2 二進制檔案的寫入方法 182
11.5.3 將結構體數據寫入到檔案 182
11.6 從檔案中讀出數據 183
11.6.1 get()方法 183
11.6.2GetLine()方法 183
11.6.3 rdbuf()方法 184
11.6.4 read()方法 184
11.7 檔案指針的定位 185
11.7.1 確定檔案指針在檔案流中的位置(tellp()和tellg()) 185
11.7.2 移動檔案流中指針(seekg()和seekp()) 187
11.8 關閉檔案 188
11.9 檔案處理的實例 189
11.10 本章小結 192
11.11 習題 192
第12章 預編譯( 教學視頻:28分鐘) 193
12.1 宏定義 193
12.1.1 不帶參數的宏定義 193
12.1.2 帶參數的宏定義 194
12.2 #include檔案包含 196
12.3條件編譯196
12.3.1 什麼是條件編譯 196
12.3.2 幾種常用的條件編譯格式 197
12.4 預定義宏 199
12.5 本章小結 200
12.6 習題 200
第13章 字元串的處理( 教學視頻:44分鐘) 201
13.1 string對象的定義和初始化 201
13.2 字元串類的成員函式202
13.3 字元串處理類的操作符 204
13.4 字元串類中的指針 206
13.5 string類串和C風格串之間的轉換 207
13.6 字元串套用實例 208
13.7 本章小結 212
13.8 習題 212
第3篇 C++高級特性
第14章 類和對象( 教學視頻:78分鐘) 213
14.1 類 213
14.1.1 類的定義 213
14.1.2 類的struct定義方式 216
14.2 定義一個類的實例——對象 217
14.3 類的構造函式 217
14.3.1 構造函式的定義 217
14.3.2默認構造函式219
14.3.3 構造函式的默認實參 220
14.3.4 重載構造函式 221
14.3.5 類類型的隱式轉換 224
14.4 類的成員函式 225
14.4.1 成員函式的定義 225
14.4.2 成員函式的調用 226
14.4.3常成員函式228
14.4.4 重載成員函式 229
14.5 類中的靜態成員 230
14.5.1 靜態數據成員 230
14.5.2 靜態成員函式 231
14.6 友元 233
14.7 操作符的重載 234
14.8 本章小結 235
14.9 習題 235
第15章 財富的積累——繼承( 教學視頻:46分鐘) 236
15.1 繼承的概念 236
15.2 定義基類與派生類 236
15.3 繼承方式 237
15.3.1 公有繼承 237
15.3.2 保護繼承 238
15.3.3私有繼承239
15.4 派生類的構造與析構 240
15.5 組合與繼承 241
15.6 賦值兼容原則 243
15.7 多重繼承 244
15.7.1 多重繼承的結構 244
15.7.2 多重繼承中的構造與析構 246
15.8 本章小結 247
15.9 習題 247
第16章 讓程式變得更短——模板( 教學視頻:59分鐘) 248
16.1 模板的概念與意義 248
16.2 函式模板 249
16.2.1 函式模板的定義 249
16.2.2 函式模板的用法 250
16.2.3 函式模板的重載 251
16.3 類模板 252
16.3.1 類模板的定義 252
16.3.2 類模板的實例化 254
16.3.3 模板類和類模板 255
16.3.4 類模板的套用 255
16.4 本章小結 261
16.5 習題 261
第17章 代碼的工廠——虛擬和多態( 教學視頻:43分鐘) 262
17.1 多態的定義與實現 262
17.1.1 多態的定義 262
17.1.2 多態的實現 264
17.2 虛擬函式的定義與實現 268
17.2.1 虛函式 268
17.2.2 虛擬析構函式 270
17.2.3 避免虛函式的誤用 271
17.3 抽象類與純虛函式273
17.3.1 純虛函式 273
17.3.2 抽象類和具體類 274
17.4 本章小結 276
17.5 習題 276
第18章 讓系統變得更健康——異常處理( 教學視頻:62分鐘) 277
18.1 異常處理的含義 277
18.2 拋出異常 278
18.3 捕獲異常 279
18.4 使用異常 281
18.4.1 何時避免異常 281
18.4.2 異常的典型套用 282
18.4.3 非錯誤處理 283
18.5 標準異常處理類 284
18.6 本章小結 285
18.7 習題 286
第4篇 綜合案例
第19章 學生成績管理系統( 教學視頻:58分鐘) 287
19.1 概要設計 287
19.2 詳細設計 287
19.3 代碼開發 289
19.3.1 學生類的定義 289
19.3.2 操作類的定義 290
19.3.3 設定學生姓名setname(char na[]) 290
19.3.4 設定學生學號setNo(int n) 291
19.3.5 設定英語成績setEng(float e) 291
19.3.6 設定語文成績setChi(float c) 291
19.3.7 設定數學成績setMat(float m) 291
19.3.8 設定總分settotal(float t) 291
19.3.9 獲取姓名getname() 291
19.3.10 獲取學號getNo() 291
19.3.11 獲取英語成績getEng() 292
19.3.12 獲取語文成績getChi() 292
19.3.13 獲取數學成績getMat() 292
19.3.14 獲取總分gettotal() 292
19.3.15 輸入學生信息getdata() 292
19.3.16 總分排序sort() 293
19.3.17 顯示所有學生記錄DISP() 293
19.3.18 初始化界面initdisp() 294
19.3.19 添加數據記錄adddata() 294
19.3.20 按照學號查找記錄namefind(int) 295
19.3.21 輸入學號inputonename() 296
19.3.22 刪除學生記錄dele(int num) 296
19.3.23 計算平均分函式 297
19.3.24 返回記錄數目getns() 297
19.3.25 退出系統quit() 297
19.3.26 程式主函式main 298
19.4 本章小結 299
第20章 銀行自動操作終端系統( 教學視頻:27分鐘) 300
20.1 概要設計 300
20.2 詳細設計 300
20.3 代碼開發 303
20.3.1 普通用戶賬戶信息類的定義 303
20.3.2 普通用戶賬戶信息類的實現 304
20.3.3 普通用戶個人信息類的定義 304
20.3.4 普通用戶個人信息類的實現 305
20.3.5 普通用戶個人操作信息類的定義 306
20.3.6 普通用戶個人操作信息類的實現 306
20.3.7 封裝類的定義 307
20.3.8 操作類的定義 309
20.3.9 聲明關於輸出的函式 309
20.3.10 系統實現主函式 310
20.4 程式效果 316
20.5 本章小結 317