圖書簡介
Ivor Horton的書能夠占據市場的一個原因是:他用其獨特、易於理解的教程風格來介紹各個主題,無論是編程新手,還是經驗豐富的編程人員,都很容易理解。現在在這本修訂的指南中,他全面介紹了標準C++語言和Visual C++2012。循序漸進的編程練習、實用的示例和清晰的解決方案,帶領讀者學習C++開發的來龍去脈。學習完本書,您就會牢固掌握使用Visual C++2012創建實際應用程式的技術。
目錄
第1章使用VisualC++編程..1
1.1使用VisualC++學習......1
1.2編寫C++應用程式..2
1.3學習桌面應用程式的編程....2
1.3.1學習C++...3
1.3.2控制台應用程式.....3
1.3.3Windows編程概念.3
1.4集成開發環境簡介..5
1.4.1編輯器.5
1.4.2編譯器.5
1.4.3連結器.5
1.4.4庫..6
1.5使用IDE.....6
1.5.1工具列選項7
1.5.2可停靠的工具列.....8
1.5.3文檔.....8
1.5.4項目和解決方案.....8
1.5.5設定VisualC++的選項....16
1.5.6創建和執行Windows應用程式....17
1.6小結....19
1.7本章主要內容.19
第2章數據、變數和計算.....21
2.1C++程式結構..21
2.1.1main()函式.....28
2.1.2程式語句.28
2.1.3空白..30
2.1.4語句塊.....30
2.1.5自動生成的控制台程式....31
2.2定義變數..32
2.2.1命名變數.32
2.2.2聲明變數.33
2.2.3變數的初始值......34
2.3基本數據類型.34
2.3.1整型變數.35
2.3.2字元數據類型......36
2.3.3整型修飾符...37
2.3.4布爾類型.38
2.3.5浮點類型.38
2.3.6C++中的基本類型......39
2.3.7字面值.....39
2.3.8定義數據類型的同義詞...40
2.4基本的輸入/輸出操作...41
2.4.1從鍵盤輸入...41
2.4.2到命令行的輸出..41
2.4.3格式化輸出...42
2.4.4轉義序列.43
2.5C++中的計算...45
2.5.1賦值語句.45
2.5.2算術運算.45
2.5.3計算餘數.50
2.5.4修改變數.50
2.5.5增量和減量運算符.....51
2.5.6計算的順序...53
2.6類型轉換和類型強制轉換..54
2.6.1賦值語句中的類型轉換...55
2.6.2顯式類型轉換......56
2.6.3老式的類型強制轉換.57
2.7AUTO關鍵字..57
2.8類型的確定......58
2.9按位運算符......58
2.9.1按位AND運算符......58
2.9.2按位OR運算符..60
2.9.3按位EOR運算符61
2.9.4按位NOT運算符61
2.9.5移位運算符...61
2.10lvalue和rvalue.....63
2.11了解存儲時間和作用域.....64
2.11.1自動變數...64
2.11.2決定變數聲明的位置...66
2.11.3全局變數...67
2.11.4靜態變數...70
2.12具有特定值集的變數.70
2.12.1舊枚舉70
2.12.2類型安全的枚舉....72
2.13名稱空間74
2.13.1聲明名稱空間..75
2.13.2多個名稱空間..76
2.14小結77
2.15練習77
2.16本章主要內容.78
第3章判斷和循環.79
3.1比較數據值.79
3.1.1if語句.80
3.1.2嵌套的if語句..81
3.1.3嵌套的if-else語句85
3.1.4邏輯運算符和表達式..87
3.1.5條件運算符.89
3.1.6switch語句.91
3.1.7無條件轉移.94
3.2重複執行語句塊..95
3.2.1循環的概念.95
3.2.2for循環的變體.97
3.2.3while循環.104
3.2.4do-while循環.106
3.2.5基於範圍的循環..107
3.2.6嵌套的循環..107
3.3小結110
3.4練習110
3.5本章主要內容..111
第4章數組、字元串和指針..113
4.1處理多個相同類型的數據值.113
4.1.1數組..113
4.1.2聲明數組114
4.1.3初始化數組..117
4.1.4使用基於範圍的for循環..118
4.1.5字元數組和字元串處理.119
4.1.6多維數組122
4.2間接數據訪問..125
4.2.1指針的概念.125
4.2.2聲明指針125
4.2.3使用指針126
4.2.4初始化指針.127
4.2.5sizeof操作符..132
4.2.6常量指針和指向常量的指針..134
4.2.7指針和數組.136
4.3動態記憶體分配..142
4.3.1堆的別名——空閒存儲器.142
4.3.2new和delete操作符.142
4.3.3為數組動態分配記憶體143
4.3.4多維數組的動態分配146
4.4使用引用.146
4.4.1引用的概念.147
4.4.2聲明並初始化lvalue引用.147
4.4.3在基於範圍的for循環中使用引用..148
4.4.4rvalue引用148
4.5字元串的庫函式.149
4.5.1確定以空字元結尾的字元串的長度.149
4.5.2連線以空字元結尾的字元串..150
4.5.3複製以空字元結尾的字元串..151
4.5.4比較以空字元結尾的字元串..152
4.5.5搜尋以空字元結尾的字元串..152
4.6小結154
4.7練習155
4.8本章主要內容..155
第5章程式結構(1).157
5.1理解函式.157
5.1.1需要函式的原因..158
5.1.2函式的結構.158
5.1.3替代的函式語法..161
5.1.4使用函式161
5.2給函式傳遞實參.164
5.2.1按值傳遞機制165
5.2.2給函式傳遞指針實參166
5.2.3給函式傳遞數組..167
5.2.4給函式傳遞引用實參171
5.2.5使用const修飾符173
5.2.6rvalue引用形參174
5.2.7main()函式的實參..176
5.2.8接受數量不定的函式實參177
5.3從函式返回值..179
5.3.1返回指針179
5.3.2返回引用182
5.3.3函式中的靜態變數...184
5.4遞歸函式調用..186
5.7本章主要內容..189
第6章程式結構(2)..191
6.1函式指針..191
6.1.1聲明函式指針...191
6.1.2函式指針作為實參...194
6.1.3函式指針的數組...196
6.2初始化函式形參..196
6.5函式重載..204
6.5.1函式重載的概念...204
6.5.2引用類型和重載選擇...207
6.5.3何時重載函式...207
6.6函式模板..208
6.7使用decltype操作符...210
6.8使用函式的示例..212
6.8.1實現計算器212
6.8.2從字元串中刪除空格...215
6.8.3計算表達式的值...216
6.8.4獲得項值218
6.8.5分析數219
6.8.6整合程式221
6.8.7擴展程式223
6.8.8提取子字元串...224
6.8.9運行修改過的程式...226
6.9小結...227
6.10練習.227
6.11本章主要內容.228
第7章自定義數據類型...229
7.1C++中的結構229
7.1.1結構的概念...230
7.1.2定義結構230
7.1.3初始化結構...230
7.1.4訪問結構的成員...231
7.1.5伴隨結構的智慧型感知幫助..234
7.1.6RECT結構235
7.1.7使用指針處理結構...236
7.2數據類型、對象、類和實例..237
7.2.1類的起源239
7.2.2類的操作239
7.2.3術語240
7.3理解類...240
7.3.1定義類240
7.3.2聲明類的對象...241
7.3.3訪問類的數據成員...241
7.3.4類的成員函式...243
7.3.5成員函式定義的位置...245
7.3.6內聯函式245
7.4類構造函式...246
7.4.1構造函式的概念...247
7.4.2默認的構造函式...248
7.4.3默認的形參值...250
7.4.4在構造函式中使用初始化列表..252
7.4.5聲明顯式的構造函式...253
7.5類的私有成員...254
7.5.1訪問私有類成員...256
7.5.2類的友元函式...257
7.5.3默認複製構造函式...259
7.6this指針260
7.7類的const對象263
7.7.1類的const成員函式263
7.7.2類外部的成員函式定義...264
7.8類對象的數組..265
7.9類的靜態成員......267
7.9.1類的靜態數據成員...267
7.9.2類的靜態函式成員...270
7.10類對象的指針和引用......270
7.10.1類對象的指針..270
7.10.2類對象的引用..273
7.11小結274
7.12練習274
7.13本章主要內容....275
第8章深入理解類277
8.1類析構函式...277
8.1.1析構函式的概念277
8.1.2默認的析構函式278
8.1.3析構函式與動態記憶體分配....280
8.2實現複製構造函式.....283
8.3在變數之間共享記憶體.284
8.3.1定義联合......285
8.3.2匿名聯合......286
8.3.3類和結構中的聯合...286
8.4運算符重載...287
8.4.1實現重載的運算符...287
8.4.2實現對比較運算符的完全支持...290
8.4.3重載賦值運算符294
8.4.4重載加法運算符299
8.4.5重載遞增和遞減運算符..303
8.4.6重載函式調用操作符......304
8.5對象複製問題......305
8.5.1避免不必要的複製操作..305
8.5.2套用rvalue引用形參......308
8.5.3命名的對象是lvalue310
8.6默認的類成員......314
8.7類模板....315
8.7.1定義類模板.316
8.7.2根據類模板創建對象......318
8.7.3使用有多個形參的類模板....321
8.7.4函式對象模板....323
8.8完美轉發.324
8.9使用類.....327
8.9.1類接口的概念....327
8.9.2定義問題......327
8.9.3實現CBox類.....328
8.10組織程式代碼.....343
8.11字元串的庫類.....345
8.11.1創建字元串對象...345
8.11.2連線字元串.....346
8.11.3訪問與修改字元串......350
8.11.4比較字元串.....353
8.11.5搜尋字元串.....356
8.12小結364
8.13練習364
8.14本章主要內容.....365
第9章類繼承和虛函式......367
9.1面向對象編程的基本思想367
9.2類的繼承.368
9.2.1基類的概念.369
9.2.2基類的派生類....369
9.3繼承機制下的訪問控制.....372
9.3.1派生類中構造函式的操作....375
9.3.2聲明類的保護成員...378
9.3.3繼承類成員的訪問級別.380
9.4派生類中的複製構造函式382
9.5禁止派生類....384
9.6友元類成員....385
9.6.1友元類...387
9.6.2對類友元關係的限制......387
9.7虛函式.....387
9.7.1虛函式的概念....389
9.7.2確保虛函式的正確執行.391
9.7.3禁止重寫函式....391
9.7.4使用指向類對象的指針.392
9.7.5使用引用處理虛函式......393
9.7.6純虛函式......395
9.7.7抽象類...395
9.7.8間接基類......398
9.7.9虛析構函式..400
9.8類類型之間的強制轉換....403
9.9嵌套類....403
9.10小結407
9.11練習407
9.12本章主要內容....409
第10章標準模板庫.....411
10.1標準模板庫的定義411
10.1.1容器....412
10.1.2容器適配器...414
10.1.3疊代器...414
10.2智慧型指針....415
10.3算法.418
10.4STL中的函式對象418
10.5STL容器範圍..419
10.6序列容器....419
10.6.1創建矢量容器.....420
10.6.2矢量容器的容量和大小423
10.6.3訪問矢量中的元素..428
10.6.4在矢量中插入和刪除元素..428
10.6.5在矢量中存儲類對象....431
10.6.6排序矢量元素.....436
10.6.7排序矢量中的指針..437
10.6.8雙端佇列容器.....442
10.6.9使用列表容器.....445
10.6.10使用forward_list容器.454
10.6.11使用其他序列容器456
10.6.12tuple<>類模板.466
10.7關聯容器....469
10.7.1使用映射容器.....469
10.7.2使用多重映射容器..480
10.8關於疊代器的更多內容....481
10.8.1使用輸入流疊代器..481
10.8.2使用插入疊代器.484
10.8.3使用輸出流疊代器..485
10.9關於函式對象的更多內容487
10.10關於算法的更多內容.488
10.11類型特質和靜態斷言.491
10.12λ表達式...492
10.12.1capture子句....493
10.12.2捕獲特定的變數..494
10.12.3模板和λ表達式..494
10.12.4包裝λ表達式.498
10.13小結.....500
10.14練習.....500
10.15本章主要內容.501
第11章Windows編程的概念.....503
11.1Windows編程基礎.503
11.1.1視窗的元素...504
11.1.2Windows程式與作業系統..505
11.1.3事件驅動型程式.505
11.1.4Windows訊息.....506
11.1.5WindowsAPI.506
11.1.6Windows數據類型..506
11.1.7Windows程式中的符號507
11.2Windows程式的結構...508
11.2.1WinMain()函式...509
11.2.2訊息處理函式.....519
11.3MFC.524
11.3.1MFC表示法.524
11.3.2MFC程式的組織方式...525
11.4小結.528
11.5本章主要內容...528
第12章使用MFC編寫Windows程式....531
12.1MFC的文檔/視圖概念531
12.1.1文檔的概念...531
12.1.2文檔界面.532
12.1.3視圖的概念...532
12.1.4連結文檔和視圖.533
12.1.5應用程式和MFC.....534
12.2創建MFC應用程式...535
12.2.1創建SDI應用程式..536
12.2.2MFCApplicationWizard的輸出....539
12.2.3創建MDI應用程式548
12.3小結.549
12.4練習.550
12.5本章主要內容0.....550
第13章處理選單和工具列...551
13.1與Windows進行通信.551
13.1.1了解訊息映射.....552
13.1.2訊息類別.554
13.1.3處理程式中的訊息..554
13.2擴展Sketcher程式555
13.3選單的元素556
13.4為選單訊息添加處理程式559
13.4.1選擇處理選單訊息的類560
13.4.2創建選單訊息函式..560
13.4.3編寫選單訊息函式的代碼..562
13.4.4添加更新選單訊息的處理程式...565
13.5添加工具列按鈕....568
13.5.1編輯工具列按鈕的屬性569
13.5.2練習使用工具列按鈕....570
13.5.3添加工具提示.....571
13.6小結.571
13.7練習.571
13.8本章主要內容..571
第14章在視窗中繪圖.....573
14.1視窗繪圖的基礎知識..573
14.1.1視窗工作區...573
14.1.2Windows圖形設備界面574
14.2MFC的繪圖機制...576
14.2.1應用程式中的視圖類....576
14.2.2CDC類....577
14.3實際繪製圖形..585
14.4對滑鼠進行編程....587
14.4.1滑鼠發出的訊息.587
14.4.2滑鼠訊息處理程式..588
14.4.3使用滑鼠繪圖.....590
14.5繪製草圖.....611
14.5.1運行示例.612
14.5.2捕獲滑鼠訊息.....612
14.6小結.613
14.7練習題...613
14.8本章主要內容...614
第15章改進視圖.615
15.1Sketcher應用程式的缺陷..615
15.2改進視圖.....616
15.2.1更新多個視圖.....616
15.2.2滾動視圖.617
15.2.3使用MM_LOENGLISH映射模式.622
15.3刪除和移動元素.....622
15.4實現上下文選單.....623
15.4.1關聯選單和類.....624
15.4.2選中上下文選單項..625
15.5標識位於游標下的元素.....626
15.5.1練習彈出選單.....627
15.5.2突出顯示元素.....627
15.5.3實現移動和刪除功能....631
15.6處理禁止的元素.....637
15.7小結.639
15.8練習.639
15.9本章主要內容...639
第16章使用對話框和控制項....641
16.1理解對話框.641
16.2理解控制項.....642
16.3創建對話框資源.....642
16.3.1給對話框添加控制項..643
16.3.2測試對話框...644
16.4對話框的編程...644
16.4.1添加對話框類.....644
16.4.2模態和非模態對話框....645
16.4.3顯示對話框...646
16.5支持對話框控制項....648
16.5.1初始化對話框控制項..648
16.5.2處理單選按鈕訊息..649
16.6完成對話框的操作650
16.6.1給文檔添加線寬.651
16.6.2給元素添加線寬.651
16.6.3在視圖中創建元素..653
16.6.4練習使用對話框.654
16.7使用微調按鈕控制項655
16.7.1添加Scale選單項和工具列按鈕...655
16.7.2創建微調按鈕.....655
16.7.3生成比例對話框類..656
16.7.4顯示微調按鈕.....659
16.8使用縮放比例..660
16.8.1可縮放的映射模式..660
16.8.2設定文檔的大小.661
16.8.3設定映射模式.....662
16.8.4同時實現滾動與縮放....663
16.9使用狀態欄665
16.9.1給框架視窗添加狀態欄665
16.9.2CString類669
16.10使用編輯框控制項..669
16.10.1創建編輯框資源..670
16.10.2創建對話框類671
16.10.3添加Text選單項.672
16.10.4定義文本元素672
16.10.5實現CText類.673
16.11小結.....677
16.12練習....678
16.13本章主要內容678
第17章存儲和列印文檔.679
17.1了解序列化679
17.2序列化文檔680
17.2.1文檔類定義中的序列化680
17.2.2文檔類實現中的序列化681
17.2.3基於CObject的類的功能...683
17.2.4序列化的工作方式..684
17.2.5如何實現類的序列化....685
17.3套用序列化.685
17.3.1記錄文檔修改.....686
17.3.2序列化文檔...687
17.3.3序列化元素類.....689
17.4練習序列化.693
17.5列印文檔.....694
17.6實現多頁列印...697
17.6.1獲取文檔的總尺寸..698
17.6.2存儲列印數據.....698
17.6.3準備列印.699
17.6.4列印後的清除.....700
17.6.5準備設備上下文.701
17.6.6列印文檔.701
17.6.7獲得文檔的列印輸出....705
17.7小結.705
17.8練習.705
17.9本章主要內容...706
第18章編寫Windows8應用程式...707
18.1理解Windows8應用程式707
18.2開發WINDOWS8應用程式.708
18.4.1C++/CX名稱空間...710
18.4.2定義WinRT類類型.711
18.4.3Ref類類型的變數....713
18.4.4訪問ref類對象的成員..713
18.4.5事件處理函式.....714
18.4.6轉換ref類引用的類型..714
18.5XAML...714
18.5.1XAML元素..715
18.5.2XAML中的UI元素.....716
18.5.3附加屬性.719
18.5.4父元素和子元素.719
18.5.5控制項元素.719
18.5.6布局元素.720
18.5.7處理UI元素的事件720
18.6創建Windows8應用程式721
18.6.1應用程式檔案.....721
18.6.2定義用戶界面.....722
18.6.3創建標題.724
18.6.4添加遊戲控制項.....726
18.6.5創建包含紙牌的格線....727
18.6.6實現遊戲的操作.732
18.6.7初始化MainPage對象..735
18.6.8初始化一副紙牌.736
18.6.9建立cardGrid的子元素736
18.6.10初始化遊戲.738
18.6.11洗牌..740
18.6.12突出顯示UI紙牌..741
18.6.13處理翻牌事件.....741
18.6.14處理圖形事件...743
18.6.15確認贏家.....745
18.6.16處理遊戲控制項的按鈕事件746
18.7縮放UI元素.....747
18.8平移.749
18.8.1應用程式的啟動動畫....749
18.8.2故事板動畫...750
18.9小結.752
18.10本章主要內容.752