C++編程自學寶典
內容描述
作為一門廣為人知的編程語言,C++已經誕生30多年了,這期間也出現並流行過許多種編程語言,但是C++是經得起考驗的。如此經典的編程語言,值得每一位編程領域的新人認真學習,也適合有經驗的程序員細細品味。
本書旨在通過全面細致的內容和代碼示例,帶領讀者更加全方位地認識C++語言。全書分為10章,由淺入深地介紹了C++的各項特性,包括C++語法、數據類型、指針、函數、類、面向對象特性、標準庫容器、字符串、診斷和調試等。本書涵蓋了C++11規範及相關的C++11標準庫,是全面學習C++編程的合適之選。
本書適合C++零基礎讀者,但是希望讀者有一些編程經驗。通過書中豐富、典型的代碼示例,讀者將快速把握C++的特性和編程技巧。
目錄大綱
第1章初識C++ 1
1.1本章的主要內容1
1.2 C++是什麼1
1.3安裝Visual C++ 2
1.3.1安裝配置2
1.3.2下載安裝文件2
1.3.3安裝Visual Studio 3
1.3.4註冊Microsoft賬號5
1.4 C++項目結構簡介6
1.4.1編譯器6
1.4.2鏈接代碼7
1.4.3源文件8
1.4.4預處理器和標識符14
1.4.5依賴項18
1.5編寫一個簡單的項目程序22
1.5. 1項目結構22
1.5.2創建預編譯頭文件22
1.5.3創建主文件23
1.5.4輸入和輸出流24
1.5.5 time函數25
1.5.6構建可執行文件26
1.5.7測試代碼27
1.5. 8修改項目27
1.6小結27
第2章語言特性簡介28
2.1編寫C++代碼28
2.1.1空格28
2.1.2格式化代碼29
2.1.3編寫語句30
2.1.4類型和變量32
2.1.5常量和文字33
2.1.6命名空間37
2.1.7 C++的變量作用域40
2.2運算符42
2.3執行流控制49
2.3.1條件語句49
2.3.2選擇51
2.3.3循環53
2.3.4跳轉57
2.4 C++語言特性應用58
2.5小結62
第3章C++類型探秘63
3.1內置類型63
3.1.1整數類型64
3.1.2浮點類型68
3.1.3字符和字符串69
3.1.4布爾類型75
3.1.5 void 75
3.1.6初始化器76
3.1.7默認值77
3.1.8無類型的變量聲明78
3.1.9存儲類80
3.1.10類型別名81
3.1.11記錄類型中的聚合數據82
3.1. 12訪問運行時類型信息88
3.1.13類型取值範圍89
3.2類型之間的轉換89
3.2.1類型轉換89
3.2.2轉型91
3.3 C++類型應用94
3.4小結101
第4章內存、數組和指針102
4.1 C++中的使用內存102
4.1.1 C++指針語法102
4.1.2空指針104
4.1.3內存類型104
4.1.4指針算術106
4.2數組107
4.2.1函數參數108
4.2.2多維數組109
4.2.3將多維數組傳遞給
函數110
4.2.4字符數組111
4.3在C++中使用指針113
4.3.1訪問越界113
4.3.2指針內存釋放113
4.3.3指針轉型114
4.4在代碼中分配內存115
4.4.1分配單個對象116
4.4.2分配對像數組116
4.4.3處理內存分配異常117
4.4.4 new運算符的其他版本117
4.4.5內存的生命週期118
4.4.6 Windows SDK和指針118
4.5內存與C++標準庫120
4.6引用122
4.6.1常量引用123
4.6.2返回引用123
4.6.3臨時引用124
4.6.4右值引用125
4.6.5 for循環區間和引用127
4.7指針實戰128
4.7.1創建項目129
4.7.2將task對象添加到列表130
4.7.3刪除任務列表131
4.7.4遍歷任務列表132
4.7.5插入元素133
4.8小結135
第5章函數136
5.1定義C++函數136
5.1 .1聲明和定義函數136
5.1.2聲明鏈接137
5.1.3內聯化137
5.1.4確定返回類型138
5.1.5函數命名138
5.1.6函數參數138
5.1.7聲明異常139
5.1.8函數體139
5.2函數參數139
5.2.1傳遞初始化器列表140
5.2.2默認參數140
5.2.3可變參數141
5.3函數特性144
5.3.1堆棧調用144
5.3.2聲明調用規範144
5.3.3遞歸145
5.3. 4函數重載146
5.3.5函數和作用域146
5.3.6刪除函數146
5.3.7值傳遞和引用傳遞147
5.4函數設計148
5.4.1前置條件和後置條件148
5.4.2不變量149
5.5函數指針150
5.5.1留意括號150
5.5.2聲明函數指針150
5.5.3函數指針用法151
5.6模板函數152
5.6.1定義模板153
5.6.2模板參數值155
5.6.3專一化模板157
5.6 .4可變參數模板157
5.7運算符重載159
5.7.1函數對象161
5.7.2 lambda表達式簡介163
5.8函數在C++中的應用164
5.9小結169
第6章類170
6.1編寫類170
6.1.1重新審視結構體170
6.1.2定義類171
6.1.3定義類的行為171
6.1.4創建對象174
6.1.5聲明靜態成員181
6.1.6嵌套類184
6.1.7訪問常量對象184
6.2對象和指針185
6.2 .1指向對象成員的指針185
6.2.2運算符重載186
6.2.3定義函數類188
6.2.4定義轉換運算符191
6.2.5資源管理192
6.2.6編寫包裝器類192
6.2.7智能指針193
6.3模板198
6.4類的應用200
6.5小結203
第7章面向對象編程簡介204
7.1繼承和組合204
7.1.1從一個類繼承204
7.1.2方法重載和名稱隱藏206
7.1.3指針和引用208
7.1 .4訪問層級209
7.1.5繼承訪問層級211
7.1.6多繼承211
7.2多態簡介214
7.2.1虛方法215
7.2.2虛方法表217
7.2.3多繼承和虛方法表218
7.2.4虛方法、構造函數和析構函數219
7.2.5容器和虛方法219
7.2.6友元和繼承220
7.2.7重載和關鍵字final 221
7.2.8虛擬繼承222
7.2.9抽像類222
7.2.10獲取類型信息224
7.2.11智能指針和虛方法226
7.2.12接口228
7.2.13類之間的關係230
7.2.14 mixin類231
7.3多態應用233
7.4小結244
第8章標準庫容器245
8.1 pair和tuple 245
8.2容器247
8.2.1順序容器248
8.2.2關聯容器252
8.2.3專用容器255
8.2.4迭代器256
8.3算法261
8.3.1元素迭代261
8.3.2獲取信息263
8.3.3容器比較263
8.3. 4修改元素264
8.3.5查找元素266
8.3.6元素排序267
8.4數值庫268
8.4.1編譯期運算268
8.4.2複數270
8.5標準庫應用271
8.6小結276
第9章字符串277
9.1把字符串類當作容器277
9.1.1獲取字符串信息278
9.1.2修改字符串278
9.1.3搜索字符串279
9.2國際化281
9.3字符串和數字284
9.3.1將字符串轉換成數字284
9.3.2將數字轉換成字符串284
9.4 stream類285
9.4.1輸出浮點數285
9.4.2輸出整數287
9.4.3輸出時間和貨幣288
9.4.4使用stream將數字轉換為字符串289
9.4.5使用stream從字符串讀取數字290
9.5正則表達式292
9.5.1正則表達式定義292
9.5.2標準庫類294
9.6字符串應用298
9.6.1創建項目299
9.6.2處理標題子元素303
9.7小結305
第10章診斷和調試306
10.1準備工作306
10.1.1不變性和條件編譯306
10.1.2條件編譯307
10.1.3 pragma指令308
10.1.4添加通知消息309
10.1.5調試程序的編譯器開關311
10.1.6預處理器標識符312
10.1.7生成診斷信息314
10.1.8斷言318
10.2應用程序終止319
10.3異常值320
10.3.1獲取描述信息321
10.3.2消息編譯器322
10.4 C++的異常323
10.4.1異常規範323
10.4.2 C++異常語法323
10.4.3標準exception類325
10.4.4根據類型捕獲異常326
10.4.5函數中的try語句塊328
10.4.6系統異常329
10.4.7異常嵌套330
10.4.8結構化異常處理331
10.4.9編譯器異常開關334
10.4.10 C++和SEH混合異常處理334
10.4.11編寫異常安全的類336
10.5小結337
作者介紹
作者:[英]理查德·格里姆斯(Richard Grimes)譯者:鄧世超
Richard Grimes有25年C++編程經驗,曾經致力於汽車製造業遠程設備的金融分析和科學控制等多個項目。他曾經在70多場微軟技術(其中包含C++和C#)的國際會議上發布重要講話,共編寫了8本書,在編程期刊上發表了150多篇文章,主講了5期Microsoft培訓課程。Richard曾經連續10年(1998-2007)獲得微軟MVP認證。他對微軟.net框架和C++的深刻理解,以及他對新技術的坦率評估在業內享有盛譽。