作為一門廣為人知的編程語言,C++已經(jīng)誕生30多年了,這期間也出現(xiàn)并流行過許多種編程語言,但是C++是經(jīng)得起考驗的。如此經(jīng)典的編程語言,值得每一位編程領(lǐng)域的新人認真學(xué)習(xí),也適合有經(jīng)驗的程序員細細品味。
本書旨在通過全面細致的內(nèi)容和代碼示例,帶領(lǐng)讀者更加全方位地認識C++語言。全書分為10章,由淺入深地介紹了C++的各項特性,包括C++語法、數(shù)據(jù)類型、指針、函數(shù)、類、面向?qū)ο筇匦、?biāo)準(zhǔn)庫容器、字符串、診斷和調(diào)試等。本書涵蓋了C++11規(guī)范及相關(guān)的C++11標(biāo)準(zhǔn)庫,是全面學(xué)習(xí)C++編程的合適之選。
本書適合C++零基礎(chǔ)讀者,但是希望讀者有一些編程經(jīng)驗。通過書中豐富、典型的代碼示例,讀者將快速把握C++的特性和編程技巧。
現(xiàn)在銷售的大多數(shù)C++圖書都是詳細地介紹了C++的基本知識和高級主題等,很少有介紹如何閱讀、理解C++項目的。本書會首先講解C++項目的結(jié)構(gòu),讓讀者了解如何閱讀C++項目。接著,又講解了C++的功能、類等知識,旨在讓讀者理解每一處知識的實際用處,便于讀者在應(yīng)用中快速上手。
縱觀全書,其重點內(nèi)容是內(nèi)存和指針。讀者將了解如何分配和訪問內(nèi)存,并能夠編寫不泄漏內(nèi)存的代碼。最后,讀者將學(xué)習(xí)C++類,并對面向?qū)ο缶幊毯投鄳B(tài)技術(shù)有一個初步了解。
Richard Grimes有25年C++編程經(jīng)驗,曾經(jīng)致力于汽車制造業(yè)遠程設(shè)備的金融分析和科學(xué)控制等多個項目。他曾經(jīng)在70多場微軟技術(shù)(其中包含C++和C#)的國際會議上發(fā)布重要講話,共編寫了8本書,在編程期刊上發(fā)表了150多篇文章,主講了5期Microsoft培訓(xùn)課程。Richard曾經(jīng)連續(xù)10年(1998-2007)獲得微軟MVP認證。他對微軟.net框架和C++的深刻理解,以及他對新技術(shù)的坦率評估在業(yè)內(nèi)享有盛譽。
第 1章 初識C++\t1
1.1 本章的主要內(nèi)容\t1
1.2 C++是什么\t1
1.3 安裝Visual C++\t2
1.3.1 安裝配置\t2
1.3.2 下載安裝文件\t2
1.3.3 安裝Visual Studio\t3
1.3.4 注冊Microsoft賬號\t5
1.4 C++項目結(jié)構(gòu)簡介\t6
1.4.1 編譯器\t6
1.4.2 鏈接代碼\t7
1.4.3 源文件\t8
1.4.4 預(yù)處理器和標(biāo)識符\t14
1.4.5 依賴項\t18
1.5 編寫一個簡單的項目程序\t22
1.5.1 項目結(jié)構(gòu)\t22
1.5.2 創(chuàng)建預(yù)編譯頭文件\t22
1.5.3 創(chuàng)建主文件\t23
1.5.4 輸入和輸出流\t24
1.5.5 time函數(shù)\t25
1.5.6 構(gòu)建可執(zhí)行文件\t26
1.5.7 測試代碼\t27
1.5.8 修改項目\t27
1.6 小結(jié)\t27
第 2章 語言特性簡介\t28
2.1 編寫C++代碼\t28
2.1.1 空格\t28
2.1.2 格式化代碼\t29
2.1.3 編寫語句\t30
2.1.4 類型和變量\t32
2.1.5 常量和文字\t33
2.1.6 命名空間\t37
2.1.7 C++的變量作用域\t40
2.2 運算符\t42
2.3 執(zhí)行流控制\t49
2.3.1 條件語句\t49
2.3.2 選擇\t51
2.3.3 循環(huán)\t53
2.3.4 跳轉(zhuǎn)\t57
2.4 C++語言特性應(yīng)用\t58
2.5 小結(jié)\t62
第3章 C++類型探秘\t63
3.1 內(nèi)置類型\t63
3.1.1 整數(shù)類型\t64
3.1.2 浮點類型\t68
3.1.3 字符和字符串\t69
3.1.4 布爾類型\t75
3.1.5 void\t75
3.1.6 初始化器\t76
3.1.7 默認值\t77
3.1.8 無類型的變量聲明\t78
3.1.9 存儲類\t80
3.1.10 類型別名\t81
3.1.11 記錄類型中的聚合數(shù)據(jù)\t82
3.1.12 訪問運行時類型信息\t88
3.1.13 類型取值范圍\t89
3.2 類型之間的轉(zhuǎn)換\t89
3.2.1 類型轉(zhuǎn)換\t89
3.2.2 轉(zhuǎn)型\t91
3.3 C++類型應(yīng)用\t94
3.4 小結(jié)\t101
第4章 內(nèi)存、數(shù)組和指針\t102
4.1 C++中的使用內(nèi)存\t102
4.1.1 C++指針語法\t102
4.1.2 空指針\t104
4.1.3 內(nèi)存類型\t104
4.1.4 指針?biāo)阈g(shù)\t106
4.2 數(shù)組\t107
4.2.1 函數(shù)參數(shù)\t108
4.2.2 多維數(shù)組\t109
4.2.3 將多維數(shù)組傳遞給
函數(shù)\t110
4.2.4 字符數(shù)組\t111
4.3 在C++中使用指針\t113
4.3.1 訪問越界\t113
4.3.2 指針內(nèi)存釋放\t113
4.3.3 指針轉(zhuǎn)型\t114
4.4 在代碼中分配內(nèi)存\t115
4.4.1 分配單個對象\t116
4.4.2 分配對象數(shù)組\t116
4.4.3 處理內(nèi)存分配異常\t117
4.4.4 new運算符的其他版本\t117
4.4.5 內(nèi)存的生命周期\t118
4.4.6 Windows SDK和指針\t118
4.5 內(nèi)存與C++標(biāo)準(zhǔn)庫\t120
4.6 引用\t122
4.6.1 常量引用\t123
4.6.2 返回引用\t123
4.6.3 臨時引用\t124
4.6.4 右值引用\t125
4.6.5 for循環(huán)區(qū)間和引用\t127
4.7 指針實戰(zhàn)\t128
4.7.1 創(chuàng)建項目\t129
4.7.2 將task對象添加到列表\t130
4.7.3 刪除任務(wù)列表\t131
4.7.4 遍歷任務(wù)列表\t132
4.7.5 插入元素\t133
4.8 小結(jié)\t135
第5章 函數(shù)\t136
5.1 定義C++函數(shù)\t136
5.1.1 聲明和定義函數(shù)\t136
5.1.2 聲明鏈接\t137
5.1.3 內(nèi)聯(lián)化\t137
5.1.4 確定返回類型\t138
5.1.5 函數(shù)命名\t138
5.1.6 函數(shù)參數(shù)\t138
5.1.7 聲明異常\t139
5.1.8 函數(shù)體\t139
5.2 函數(shù)參數(shù)\t139
5.2.1 傳遞初始化器列表\t140
5.2.2 默認參數(shù)\t140
5.2.3 可變參數(shù)\t141
5.3 函數(shù)特性\t144
5.3.1 堆棧調(diào)用\t144
5.3.2 聲明調(diào)用規(guī)范\t144
5.3.3 遞歸\t145
5.3.4 函數(shù)重載\t146
5.3.5 函數(shù)和作用域\t146
5.3.6 刪除函數(shù)\t146
5.3.7 值傳遞和引用傳遞\t147
5.4 函數(shù)設(shè)計\t148
5.4.1 前置條件和后置條件\t148
5.4.2 不變量\t149
5.5 函數(shù)指針\t150
5.5.1 留意括號\t150
5.5.2 聲明函數(shù)指針\t150
5.5.3 函數(shù)指針用法\t151
5.6 模板函數(shù)\t152
5.6.1 定義模板\t153
5.6.2 模板參數(shù)值\t155
5.6.3 專一化模板\t157
5.6.4 可變參數(shù)模板\t157
5.7 運算符重載\t159
5.7.1 函數(shù)對象\t161
5.7.2 lambda表達式簡介\t163
5.8 函數(shù)在C++中的應(yīng)用\t164
5.9 小結(jié)\t169
第6章 類\t170
6.1 編寫類\t170
6.1.1 重新審視結(jié)構(gòu)體\t170
6.1.2 定義類\t171
6.1.3 定義類的行為\t171
6.1.4 創(chuàng)建對象\t174
6.1.5 聲明靜態(tài)成員\t181
6.1.6 嵌套類\t184
6.1.7 訪問常量對象\t184
6.2 對象和指針\t185
6.2.1 指向?qū)ο蟪蓡T的指針\t185
6.2.2 運算符重載\t186
6.2.3 定義函數(shù)類\t188
6.2.4 定義轉(zhuǎn)換運算符\t191
6.2.5 資源管理\t192
6.2.6 編寫包裝器類\t192
6.2.7 智能指針\t193
6.3 模板\t198
6.4 類的應(yīng)用\t200
6.5 小結(jié)\t203
第7章 面向?qū)ο缶幊毯喗閈t204
7.1 繼承和組合\t204
7.1.1 從一個類繼承\(zhòng)t204
7.1.2 方法重載和名稱隱藏\t206
7.1.3 指針和引用\t208
7.1.4 訪問層級\t209
7.1.5 繼承訪問層級\t211
7.1.6 多繼承\(zhòng)t211
7.2 多態(tài)簡介\t214
7.2.1 虛方法\t215
7.2.2 虛方法表\t217
7.2.3 多繼承和虛方法表\t218
7.2.4 虛方法、構(gòu)造函數(shù)和析構(gòu)函數(shù)\t219
7.2.5 容器和虛方法\t219
7.2.6 友元和繼承\(zhòng)t220
7.2.7 重載和關(guān)鍵字final\t221
7.2.8 虛擬繼承\(zhòng)t222
7.2.9 抽象類\t222
7.2.10 獲取類型信息\t224
7.2.11 智能指針和虛方法\t226
7.2.12 接口\t228
7.2.13 類之間的關(guān)系\t230
7.2.14 mixin類\t231
7.3 多態(tài)應(yīng)用\t233
7.4 小結(jié)\t244
第8章 標(biāo)準(zhǔn)庫容器\t245
8.1 pair和tuple\t245
8.2 容器\t247
8.2.1 順序容器\t248
8.2.2 關(guān)聯(lián)容器\t252
8.2.3 專用容器\t255
8.2.4 迭代器\t256
8.3 算法\t261
8.3.1 元素迭代\t261
8.3.2 獲取信息\t263
8.3.3 容器比較\t263
8.3.4 修改元素\t264
8.3.5 查找元素\t266
8.3.6 元素排序\t267
8.4 數(shù)值庫\t268
8.4.1 編譯期運算\t268
8.4.2 復(fù)數(shù)\t270
8.5 標(biāo)準(zhǔn)庫應(yīng)用\t271
8.6 小結(jié)\t276
第9章 字符串\t277
9.1 把字符串類當(dāng)作容器\t277
9.1.1 獲取字符串信息\t278
9.1.2 修改字符串\t278
9.1.3 搜索字符串\t279
9.2 國際化\t281
9.3 字符串和數(shù)字\t284
9.3.1 將字符串轉(zhuǎn)換成數(shù)字\t284
9.3.2 將數(shù)字轉(zhuǎn)換成字符串\t284
9.4 stream類\t285
9.4.1 輸出浮點數(shù)\t285
9.4.2 輸出整數(shù)\t287
9.4.3 輸出時間和貨幣\t288
9.4.4 使用stream將數(shù)字轉(zhuǎn)換為字符串\t289
9.4.5 使用stream從字符串讀取數(shù)字\t290
9.5 正則表達式\t292
9.5.1 正則表達式定義\t292
9.5.2 標(biāo)準(zhǔn)庫類\t294
9.6 字符串應(yīng)用\t298
9.6.1 創(chuàng)建項目\t299
9.6.2 處理標(biāo)題子元素\t303
9.7 小結(jié)\t305
第 10章 診斷和調(diào)試\t306
10.1 準(zhǔn)備工作\t306
10.1.1 不變性和條件編譯\t306
10.1.2 條件編譯\t307
10.1.3 pragma指令\t308
10.1.4 添加通知消息\t309
10.1.5 調(diào)試程序的編譯器開關(guān)\t311
10.1.6 預(yù)處理器標(biāo)識符\t312
10.1.7 生成診斷信息\t314
10.1.8 斷言\t318
10.2 應(yīng)用程序終止\t319
10.3 異常值\t320
10.3.1 獲取描述信息\t321
10.3.2 消息編譯器\t322
10.4 C++的異常\t323
10.4.1 異常規(guī)范\t323
10.4.2 C++異常語法\t323
10.4.3 標(biāo)準(zhǔn)exception類\t325
10.4.4 根據(jù)類型捕獲異常\t326
10.4.5 函數(shù)中的try語句塊\t328
10.4.6 系統(tǒng)異常\t329
10.4.7 異常嵌套\t330
10.4.8 結(jié)構(gòu)化異常處理\t331
10.4.9 編譯器異常開關(guān)\t334
10.4.10 C++和SEH混合異常處理\t334
10.4.11 編寫異常安全的類\t336
10.5 小結(jié)\t337