現(xiàn)代C++教程高速上手.pdf
http://www.www.srpcoatings.com
2020年12月1日
![]() |
| 第1頁 |
![]() |
| 第7頁 |
![]() |
| 第13頁 |
![]() |
| 第30頁 |
![]() |
| 第31頁 |
![]() |
| 第66頁 |
參見附件(2609KB,79頁)。
現(xiàn)代C++新標(biāo)準(zhǔn)教程速學(xué)教程
每章中都出現(xiàn)了大量的代碼,如果你在跟隨本書介紹特性的思路編寫自己的代碼遇到問題時,不妨讀一讀隨書附上的源碼,你可以在這里中找到書中介紹過的全部的源碼,所有代碼按章節(jié)組織,文件夾名稱為章節(jié)序號。

現(xiàn)代C++教程高速上手






特色介紹
C++ 是一個用戶群體相當(dāng)大的語言。從 C++98 的出現(xiàn)到 C++11 的正式定稿經(jīng)歷了長達(dá)十年多之久的積累。C++14/17 則是作為對 C++11 的重要補(bǔ)充和優(yōu)化,C++20 則將這門語言領(lǐng)進(jìn)了現(xiàn)代化的大門,所有這些新標(biāo)準(zhǔn)中擴(kuò)充的特性,給 C++ 這門語言注入了新的活力。 那些還在堅(jiān)持使用傳統(tǒng) C++(本書把 C++98 及其之前的 C++ 特性均稱之為傳統(tǒng) C++)而未接觸過現(xiàn)代 C++ 的 C++ 程序員在見到諸如 Lambda 表達(dá)式這類全新特性時,甚至?xí)髀冻觥簩W(xué)的不是同一門語言』的驚嘆之情。
現(xiàn)代 C++ (本書中均指 C++11/14/17/20) 為傳統(tǒng) C++ 注入的大量特性使得整個 C++ 變得更加像一門現(xiàn)代化的語言,F(xiàn)代 C++ 不僅僅增強(qiáng)了 C++ 語言自身的可用性,auto 關(guān)鍵字語義的修改使得我們更加有信心來操控極度復(fù)雜的模板類型。同時還對語言運(yùn)行期進(jìn)行了大量的強(qiáng)化,Lambda 表達(dá)式的出現(xiàn)讓 C++ 具有了『匿名函數(shù)』的『閉包』特性,而這一特性幾乎在現(xiàn)代的編程語言(諸如 Python/Swift/..)中已經(jīng)司空見慣,右值引用的出現(xiàn)解決了 C++ 長期以來被人詬病的臨時對象效率問題等等。
C++17 則是近三年依賴 C++ 社區(qū)一致推進(jìn)的方向,也指出了現(xiàn)代C++編程的一個重要發(fā)展方向。盡管它的出現(xiàn)并不如 C++11 的分量之重,但它包含了大量小而美的語言與特性(例如結(jié)構(gòu)化綁定),這些特性的出現(xiàn)再一次修正了我們在 C++ 中的編程范式。
現(xiàn)代 C++ 還為自身的標(biāo)準(zhǔn)庫增加了非常多的工具和方法,諸如在語言自身標(biāo)準(zhǔn)的層面上制定了 std::thread,從而支持了并發(fā)編程,在不同平臺上不再依賴于系統(tǒng)底層的 API,實(shí)現(xiàn)了語言層面的跨平臺支持;std::regex 提供了完整的正則表達(dá)式支持等等。C++98 已經(jīng)被實(shí)踐證明了是一種非常成功的『范型』,而現(xiàn)代 C++ 的出現(xiàn),則進(jìn)一步推動這種范型,讓 C++ 成為系統(tǒng)程序設(shè)計(jì)和庫開發(fā)更好的語言。Concept 提供了對模板參數(shù)編譯期的檢查,進(jìn)一步增強(qiáng)了語言整體的可用性。
總而言之,我們作為 C++ 的擁護(hù)與實(shí)踐者,始終保持接納新事物的開放心態(tài),才能更快的推進(jìn) C++ 的發(fā)展,使得這門古老而又新穎的語言更加充滿活力。
本書號稱『高速上手』,從內(nèi)容上對二十一世紀(jì)二十年代之前產(chǎn)生 C++ 的相關(guān)特性做了非常相對全面的介紹,讀者可以自行根據(jù)下面的目錄選取感興趣的內(nèi)容進(jìn)行學(xué)習(xí),快速熟悉需要了解的內(nèi)容。這些特性并不需要全部掌握,只需針對自己的使用需求和特定的應(yīng)用場景,學(xué)習(xí)、查閱最適合自己的新特性即可。
同時,本書在介紹這些特性的過程中,盡可能簡單明了的介紹了這些特性產(chǎn)生的歷史背景和技術(shù)需求,這為理解這些特性、運(yùn)用這些特性提供了很大的幫助。
此外,筆者希望讀者在閱讀本書后,能夠努力在新項(xiàng)目中直接使用 C++17,并努力將舊項(xiàng)目逐步遷移到 C++17。也算是筆者為推進(jìn)現(xiàn)代 C++ 的普及貢獻(xiàn)了一些綿薄之力。
目錄大全
序言 7
引言 7
目標(biāo)讀者 7
本書目的 7
相關(guān)代碼 8
隨書習(xí)題 8
第 1 章邁向現(xiàn)代 C++ 8
1.1 被棄用的特性 8
1.2 與 C 的兼容性 9
進(jìn)一步閱讀的參考文獻(xiàn) 11
第 2 章語言可用性的強(qiáng)化 11
2.1 常量 12
nullptr 12
constexpr 13
2.2 變量及其初始化 15
if/switch 變量聲明強(qiáng)化 15
初始化列表 16
結(jié)構(gòu)化綁定 17
2.3 類型推導(dǎo) 18
auto 18
decltype 19
尾返回類型推導(dǎo) 20
decltype(auto) 21
2.4 控制流 22
if constexpr 22
區(qū)間 for 迭代 22
2.5 模板 23
外部模板 23
尖括號 “>” 23
類型別名模板 24
默認(rèn)模板參數(shù) 24
變長參數(shù)模板 25
折疊表達(dá)式 27
非類型模板參數(shù)推導(dǎo) 27
2.6 面向?qū)ο?28
委托構(gòu)造 28
繼承構(gòu)造 29
顯式虛函數(shù)重載 29
顯式禁用默認(rèn)函數(shù) 30
強(qiáng)類型枚舉 31
總結(jié) 32
習(xí)題 32
第 3 章語言運(yùn)行期的強(qiáng)化 32
3.1 Lambda 表達(dá)式 32
基礎(chǔ) 33
泛型 Lambda 34
3.2 函數(shù)對象包裝器 35
std::function 35
std::bind 和 std::placeholder 36
3.3 右值引用 36
左值、右值的純右值、將亡值、右值 37
右值引用和左值引用 37
移動語義 39
完美轉(zhuǎn)發(fā) 41
總結(jié) 43
進(jìn)一步閱讀的參考文獻(xiàn) 44
第 4 章容器 44
4.1 線性容器 44
std::array 44
std::forward_list 46
4.2 無序容器 46
4.3 元組 47
元組基本操作 47
運(yùn)行期索引 48
元組合并與遍歷 49
總結(jié) 50
第 5 章智能指針與內(nèi)存管理 50
5.1 RAII 與引用計(jì)數(shù) 50
5.2 std::shared_ptr 50
5.3 std::unique_ptr 52
5.4 std::weak_ptr 53
總結(jié) 55
進(jìn)一步閱讀的參考資料 55
第 6 章正則表達(dá)式 55
6.1 正則表達(dá)式簡介 55
普通字符 55
特殊字符 55
限定符 56
6.2 std::regex 及其相關(guān) 56
總結(jié) 58
習(xí)題 58
進(jìn)一步閱讀的參考資料 60
第 7 章并行與并發(fā) 60
7.1 并行基礎(chǔ) 60
7.2 互斥量與臨界區(qū) 60
7.3 期物 62
7.4 條件變量 63
7.5 原子操作與內(nèi)存模型 65
原子操作 65
一致性模型 67
內(nèi)存順序 69
總結(jié) 71
習(xí)題 71
進(jìn)一步閱讀的參考資料 72
第 8 章文件系統(tǒng) 72
8.1 文檔與鏈接 72
8.2 std::filesystem 72
第 9 章其他雜項(xiàng) 72
9.1 新類型 72
long long int 72
9.2 noexcept 的修飾和操作 72
9.3 字面量 74
原始字符串字面量 74
自定義字面量 74
9.4 內(nèi)存對齊 75
總結(jié) 76
第 10 章展望:C++20 簡介 76
概念與約束 76
模塊 77
合約 77
范圍 77
協(xié)程 77
事務(wù)內(nèi)存 77
總結(jié) 77
進(jìn)一步閱讀的參考資料 77
附錄 1:進(jìn)一步閱讀的學(xué)習(xí)材料 78
附錄 2:現(xiàn)代 C++ 的最佳實(shí)踐 78
常用工具 78
代碼風(fēng)格 78
整體性能 78
代碼安全 78
可維護(hù)性 78
可移植性 79
序言閱讀
適讀人群有
1本書假定讀者已經(jīng)熟悉了傳統(tǒng) C++ ,至少在閱讀傳統(tǒng) C++ 代碼上不具備任何困難。換句話說,那些長期使用傳統(tǒng) C++ 進(jìn)行編碼的人、渴望在短時間內(nèi)迅速了解現(xiàn)代 C++ 特性的人非常適合閱讀本書;
2本書一定程度上介紹了一些現(xiàn)代 C++ 的黑魔法,但這些魔法畢竟有限,不適合希望進(jìn)階學(xué)習(xí)現(xiàn)代C++ 的讀者,本書的定位系現(xiàn)代 C++ 的快速上手。當(dāng)然,希望進(jìn)階學(xué)習(xí)的讀者可以使用本書來回顧并檢驗(yàn)自己對 現(xiàn)代 C++ 的熟悉度。
本書號稱『高速上手』,從內(nèi)容上對二十一世紀(jì)二十年代之前產(chǎn)生 C++ 的相關(guān)特性做了非常相對全面的介紹,讀者可以自行根據(jù)下面的目錄選取感興趣的內(nèi)容進(jìn)行學(xué)習(xí),快速熟悉需要了解的內(nèi)容。這些特性并不需要全部掌握,只需針對自己的使用需求和特定的應(yīng)用場景,學(xué)習(xí)、查閱最適合自己的新特性即可。
同時,本書在介紹這些特性的過程中,盡可能簡單明了的介紹了這些特性產(chǎn)生的歷史背景和技術(shù)需求,這為理解這些特性、運(yùn)用這些特性提供了很大的幫助。
此外,筆者希望讀者在閱讀本書后,能夠努力在新項(xiàng)目中直接使用 C++17,并努力將舊項(xiàng)目逐步遷移到 C++17。也算是筆者為推進(jìn)現(xiàn)代 C++ 的普及貢獻(xiàn)了一些綿薄之力。
現(xiàn)代C++教程高速上手截圖



您現(xiàn)在查看是摘要介紹頁, 詳見PDF附件(2609KB,79頁)。
代C__教程高速上手_1.jpg)
代C__教程高速上手_2.jpg)
代C__教程高速上手_3.jpg)
代C__教程高速上手_4.jpg)
代C__教程高速上手_5.jpg)
代C__教程高速上手_6.jpg)