c++編程從入門到實踐第2版

c++編程從入門到實踐第2版

《c++編程從入門到實踐第2版》是2021年人民郵電出版社出版的圖書。本書由淺入深地講解了C++開發技術的核心內容,並通過具體實例演練了各個知識點在實踐中的具體使用方法。

基本介紹

  • 中文名:c++編程從入門到實踐第2版
  • 作者:王石磊
  • 出版社:人民郵電出版社
  • 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.1C++的發展歷史2
1.1.2C++的優點和缺點2
1.2C++語言的現狀3
1.3面向對象4
1.4標準庫介紹4
第 2章搭建C++開發環境5
2.1使用Visual C++ 6.06
2.1.1Visual C++ 6.0的特點6
2.1.2安裝Visual C++ 6.06
2.2使用Microsoft Visual Studio9
2.2.1Visual Studio 2017的
新功能9
2.2.2安裝Microsoft Visual
Studio201710
2.3編寫第 一個C++程式12
2.3.1使用Visual C++ 6.0
實現13
2.3.2使用Visual Studio2017
實現15
2.4使用手機開發C++程式17
2.4.1GCC和C4droid18
2.4.2在手機中搭建C++開發
環境18
2.4.3在iPhone中使用
MobileC/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.2C++面向對象編程的
流程21
3.2C++語言的程式結構21
3.2.1初識C++程式結構21
3.2.2看C++程式的檔案組織23
3.3C++編碼規範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.1C++是面向對象,C是面
向過程,那么這個對象和
過程是什麼意思33
3.6.2面向對象和面向過程的
區別33
3.6.3學好C++的建議34
3.7課後練習34
第4章C++語言的基礎語法35
4.1標識符36
4.1.1C++中的保留字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.1C++標準庫介紹43
4.3.2標準庫中的主要成員44
4.4技術解惑45
4.4.1C++的標識符長度的
“min-length&&
max-information”原則45
4.4.2字元和字元串的區別45
4.4.3C++中string類字元串和
C中char*/char[]型
字元串的差別45
4.4.4C++字元串和C字元串的
轉換45
4.4.5C++字元串和字元串結束
標誌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.4C++變數初始化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.1C++常量的命名是否需要
遵循一定的規範60
5.5.2在C++程式中用const還是
用#define定義常量60
5.5.3const是個很重要的
關鍵字,在使用時應該
注意哪些60
5.5.4關於全局變數的初始化,
C語言和C++是否有
區別61
5.5.5C/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.2for語句循環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.6C++ 11新規範:基於範圍的
for循環語句98
7.7技術解惑99
7.7.1循環中斷的問題99
7.7.2分析循環語句的效率100
7.7.3幾種循環語句的比較100
7.7.4C++中的for循環該
怎么讀100
7.7.5一個C++循環結構
嵌套的問題100
7.7.6break語句和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.1void型指針118
8.8.2空指針119
8.8.3C++ 11:使用nullptr
得到空指針120
8.9C++ 11:使用標準庫函式
begin和end120
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.9C++ 11新特性:數組的
替代品——array145
9.10技術解惑146
9.10.1字元數組和字元串的
區別146
9.10.2字元數組和字元串可以
相互轉換147
9.10.3靜態數組的速度快於
動態數組147
9.10.4Arrays與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.2const關鍵字在函式中的
作用166
10.5.3C++函式的記憶體分配
機制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/O173
11.1.4字元串I/O174
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檢測EOF185
11.6技術解惑187
11.6.1輸入/輸出時數的
進制問題187
11.6.2數據間隔187
11.6.3記憶體檔案映射188
11.6.4get和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.3C++ 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.1using指令與using
聲明的比較220
13.4.2為什麼需要命名空間220
13.4.3命名空間的作用221
13.4.4C++中頭檔案的使用
方法222
13.5課後練習222
第 14章繼承和派生223
14.1繼承與派生基礎224
14.2C++的繼承機制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.2C++的異常處理277
17.2.1使用throw拋出異常277
17.2.2使用raise拋出異常279
17.2.3使用try catch異常
捕獲279
17.2.4異常處理中的構造和
析構281
17.3C++的異常處理總結282
17.4技術解惑284
17.4.1編寫軟體的目標284
17.4.2關於C++關鍵字new的
異常處理284
17.4.3C++語言異常處理和
結構化異常處理有
什麼區別285
17.4.4C++拋出異常不捕獲,
程式的空間會釋放嗎285
17.4.5throw拋出異常的
特點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.12set_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.2C++中的預處理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.1Bug的由來312
20.1.2程式設計方面的解釋312
20.2常見的錯誤分析312
20.3程式調試常見錯誤317
20.4C++編程中的調試技巧322
20.4.1調試標記322
20.4.2運行期間調試標記322
20.4.3把變數和表達式轉換成
字元串323
20.4.4C++語言的assert()323
20.5技術解惑323
20.5.1編寫規範易懂的代碼323
20.5.2編寫安全可靠的代碼324
20.5.3Visual 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.cpp331
21.3.3選單處理檔案
mainfunction.h332
21.3.4函式定義檔案
subfunction.h332
21.3.5選單處理實現檔案
mainfunction.cpp333
21.3.6功能函式實現檔案
subfunction.cpp337
第 22章開始闖關——C++實現網路
套用項目353
22.1項目要求354
22.1.1客戶機/伺服器模式
介紹354
22.1.2客戶機/伺服器模式的
運作流程355
22.2實現原理355
22.2.1什麼是Winsocket編程
接口355
22.2.2Winsocket中的函式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

相關詞條

熱門詞條

聯絡我們