現代C 語言核心特性解析_第1頁
現代C 語言核心特性解析_第2頁
現代C 語言核心特性解析_第3頁
現代C 語言核心特性解析_第4頁
現代C 語言核心特性解析_第5頁
已閱讀5頁,還剩91頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

現代C++語言核心特性解析讀書筆記模板01思維導圖讀書筆記目錄分析內容摘要精彩摘錄作者介紹目錄0305020406思維導圖語言核心特性書特性從業者核心小故事第章類型模板函數問題總結表達式語法聲明參數支持關鍵字分析思維導圖內容摘要內容摘要本書是一本C++進階圖書,全書分為42章,深入探討了從C++11到C++20引入的核心特性。書中不僅通過大量的實例代碼講解特性的概念和語法,還從編譯器的角度分析特性的實現原理,書中還穿插了C++標準委員會制定特性標準時的一些小故事,幫助讀者知其然也知其所以然。本書適合因為工作需要學習C++新特性的C++從業者,同樣也適合對C++新特性非常感興趣的C++愛好者。而對于C++初學者來說,也有必要在理解C++基礎知識后,通過本書來領略C++的另外一道風景。讀書筆記讀書筆記相當棒,見過最好解析C++特性的工具書了,可作為工具書使用,不熟悉某個特性來查查。對c++新特性做介紹的書籍,整體內容點到為止,作為了解還可以。很好!很難得的一本涵蓋11-20語言特性的一本書籍,是少之又少的中文參考書籍。這本書主要講解C++11-20特性,新的語法糖,現代c++發展的太快了,個人對于11,14,17基本還能理解使用,對于20暫時還不太會運用。流水線的概述了一下C++11到20的新特征。只能說勉強一看。俯瞰一下自從11以來的新功能,它們的來龍去脈。本書非常全面的介紹了現代c艸的諸多特性,不僅僅是簡單的羅列,也有很多分析和合理性討論,可以粗看一遍然后作為案頭書時常翻閱。一本非常優秀的C++新特性說明書,語言內容簡練流暢,邏輯清楚,通俗易懂。雖然寫的不是完美,但是c++新特性較為系統的介紹的書還真是少有。一本不錯的C++11~20新特性入門書,在介紹了新特性的同時也解釋了它引入的歷史淵源,讀起來很有意思。精彩摘錄精彩摘錄在C++中所謂的左值一般是指一個指向特定內存的具有名稱的值(具名對象),它有一個相對穩定的內存,并且有一段較長的生命周期。而右值則是不指向穩定內存的匿名值(不具名對象),它的生命周期很短,通常是暫時性的。內聯命名空間能夠把空間內函數和類型導出到父命名空間中,這樣即使不指定子命名空間也可以使用其空間內的函數和類型了延長臨時對象生命周期并不是這里右值引用的最終目標,其真實目標應該是減少對象復制,提升程序性能。當使用條件表達式初始化auto聲明的變量時,編譯器總是使用表達能力更強的類型:在使用auto聲明變量時,既沒有使用引用,也沒有使用指針,那么編譯器在推導的時候會忽略const和volatile限定符使用auto聲明變量初始化時,目標對象如果是引用,則引用屬性會被忽略在C++中應該盡量少使用宏,用模板取而代之是明智的選擇。目錄分析為什么要寫這本書本書特色本書的組織結構內容提要讀完這本書你將收獲什么致謝面向讀者內容提要配套資源提交錯誤信息與我們關于異步社區和異步圖書資源與支持1.1整數類型longlong1.2新字符類型char16_t和char32_t1.3char8_t字符類型1.4總結第1章新基礎類型(C++11~C++20)1.2新字符類型char16_t和char32_t1.2.1字符集和編碼方法1.2.2使用新字符類型char16_t和char32_t1.2.3wchar_t存在的問題1.2.4新字符串連接1.2.5庫對新字符類型的支持2.1內聯命名空間的定義和使用2.3總結2.2嵌套命名空間的簡化語法第2章內聯和嵌套命名空間(C++11~C++20)3.1重新定義的auto關鍵字3.2推導規則3.3什么時候使用auto3.4返回類型推導3.5lambda表達式中使用auto類型推導12345第3章auto占位符(C++11~C++17)3.7總結3.6非類型模板形參占位符第3章auto占位符(C++11~C++17)4.1回顧typeof和typeid4.2使用decltype說明符4.3推導規則4.4cv限定符的推導第4章decltype說明符(C++11~C++17)4.5decltype(auto)4.7總結4.6decltype(auto)作為非類型模板形參占位符第4章decltype說明符(C++11~C++17)5.1使用函數返回類型后置聲明函數5.3總結5.2推導函數模板返回類型第5章函數返回類型后置(C++11)6.1左值和右值6.2左值引用6.3右值引用6.4右值的性能優化空間6.5移動語義6.6值類別010302040506第6章右值引用(C++11C++17C++20)6.7將左值轉換為右值6.8萬能引用和引用折疊6.9完美轉發6.10針對局部變量和右值引用的隱式移動操作6.11總結12345第6章右值引用(C++11C++17C++20)7.1lambda表達式語法7.2捕獲列表7.3lambda表達式的實現原理7.4無狀態lambda表達式第7章lambda表達式(C++11~C++20)7.5在STL中使用lambda表達式7.6廣義捕獲7.7泛型lambda表達式7.8常量lambda表達式和捕獲this7.9捕獲[=,this]12345第7章lambda表達式(C++11~C++20)7.10模板語法的泛型lambda表達式7.12總結7.11可構造和可賦值的無狀態lambda表達式第7章lambda表達式(C++11~C++20)7.2捕獲列表7.2.1作用域7.2.2捕獲值和捕獲引用7.2.3特殊的捕獲方法8.1使用默認初始化8.3總結8.2位域的默認初始化第8章非靜態數據成員默認初始化(C++11C++20)9.1回顧變量初始化9.2使用列表初始化9.3std::initializer_list詳解9.4使用列表初始化的注意事項第9章列表初始化(C++11C++20)9.6總結9.5指定初始化第9章列表初始化(C++11C++20)9.4使用列表初始化的注意事項9.4.1隱式縮窄轉換問題9.4.2列表初始化的優先級問題10.1類的特殊成員函數10.3顯式刪除的其他用法10.2顯式默認和顯式刪除第10章默認和刪除函數(C++11)10.5總結10.4explicit和=delete第10章默認和刪除函數(C++11)11.1聯合類型在C++中的局限性11.3總結11.2使用非受限聯合類型第11章非受限聯合類型(C++11)12.1冗余的構造函數12.2委托構造函數12.3委托模板構造函數12.4捕獲委托構造函數的異常12.5委托參數較少的構造函數12.6總結010302040506第12章委托構造函數(C++11)13.1繼承關系中構造函數的困局13.3總結13.2使用繼承構造函數第13章繼承構造函數(C++11)14.1枚舉類型的弊端14.3列表初始化有底層類型枚舉對象14.2使用強枚舉類型第14章強枚舉類型(C++11C++17C++20)14.5總結14.4使用using打開強枚舉類型第14章強枚舉類型(C++11C++17C++20)15.1聚合類型的新定義15.3擴展聚合類型的兼容問題15.2聚合類型的初始化第15章擴展的聚合類型(C++17C++20)15.4禁止聚合類型使用用戶聲明的構造函數15.6總結15.5使用帶小括號的列表初始化聚合類型對象第15章擴展的聚合類型(C++17C++20)16.1重寫、重載和隱藏16.2重寫引發的問題16.3使用override說明符16.4使用final說明符第16章override和final說明符(C++11)16.6總結16.5override和final說明符的特別之處第16章override和final說明符(C++11)17.1煩瑣的容器遍歷17.2基于范圍的for循環語法17.3begin和end函數不必返回相同類型17.4臨時范圍表達式的陷阱第17章基于范圍的for循環(C++11C++17C++20)17.6總結17.5實現一個支持基于范圍的for循環的類第17章基于范圍的for循環(C++11C++17C++20)18.1支持初始化語句的if18.3總結18.2支持初始化語句的switch第18章支持初始化語句的if和switch(C++17)19.1運行時斷言19.3靜態斷言19.2靜態斷言的需求第19章static_assert聲明19.5總結19.4單參數static_assert第19章static_assert聲明20.1使用結構化綁定20.3結構化綁定的3種類型20.2深入理解結構化綁定第20章結構化綁定(C++17C++20)20.4實現一個類元組類型20.6總結20.5綁定的訪問權限問題第20章結構化綁定(C++17C++20)20.3結構化綁定的3種類型20.3.1綁定到原生數組20.3.2綁定到結構體和類對象20.3.3綁定到元組和類元組的對象21.1使用noexcept代替throw21.2用noexcept來解決移動構造問題21.3noexcept和throw()21.4默認使用noexcept的函數第21章noexcept關鍵字(C++11C++17C++20)21.5使用noexcept的時機21.7總結21.6將異常規范作為類型的一部分第21章noexcept關鍵字(C++11C++17C++20)22.1類型別名22.3總結22.2別名模板第22章類型別名和別名模板(C++11C++14)23.1零值整數字面量23.3總結23.2nullptr關鍵字第23章指針字面量nullptr(C++11)24.1“太空飛船”(spaceship)運算符24.2三向比較的返回類型24.3對基礎類型的支持24.4自動生成的比較運算符函數第24章三向比較(C++20)24.6總結24.5兼容舊代碼第24章三向比較(C++20)24.2三向比較的返回類型24.2.1std::strong_ordering24.2.2std::weak_ordering24.2.3std::partial_ordering25.1操作系統和編譯器對線程局部存儲的支持25.3總結25.2thread_local說明符第25章線程局部存儲(C++11)26.1定義非常量靜態成員變量的問題26.3總結26.2使用inline說明符第26章擴展的inline說明符(C++17)27.1常量的不確定性27.3constexpr函數27.2constexpr值第27章常量表達式(C++11~C++20)27.4constexpr構造函數27.5對浮點的支持27.6C++14標準對常量表達式函數的增強27.7constexprlambdas表達式27.8constexpr的內聯屬性12345第27章常量表達式(C++11~C++20)27.9ifconstexpr27.10允許constexpr虛函數27.11允許在constexpr函數中出現Try-catch27.12允許在constexpr中進行平凡的默認初始化27.13允許在constexpr中更改聯合類型的有效成員12345第27章常量表達式(C++11~C++20)27.14使用consteval聲明立即函數27.15使用constinit檢查常量初始化27.16判斷常量求值環境27.17總結第27章常量表達式(C++11~C++20)28.1表達式求值順序的不確定性28.3總結28.2表達式求值順序詳解第28章確定的表達式求值順序(C++17)29.1十六進制浮點字面量29.2二進制整數字面量29.3單引號作為整數分隔符29.4原生字符串字面量第29章字面量優化(C++11~C++17)29.6總結29.5用戶自定義字面量第29章字面量優化(C++11~C++17)30.1不可忽視的數據對齊問題30.2C++11標準之前控制數據對齊的方法30.3使用alignof運算符30.4使用alignas說明符30.5其他關于對齊字節長度的支持12345第30章alignas和alignof(C++11C++17)30.7總結30.6C++17中使用new分配指定對齊字節長度的對象第30章alignas和alignof(C++11C++17)31.1GCC的屬性語法31.2MSVC的屬性語法31.3標準屬性說明符語法31.4使用using打開屬性的命名空間第31章屬性說明符和標準屬性(C++11~C++20)31.6總結31.5標準屬性第31章屬性說明符和標準屬性(C++11~C++20)31.5標準屬性31.5.1noreturn31.5.2carries_dependency31.5.3deprecated31.5.4fallthrough31.5.5nodiscard31.5.6maybe_unused31.5.7likely和unlikely31.5.8no_unique_address32.1預處理器__has_include32.2特性測試宏32.3新增宏VA_OPT32.4總結第32章新增預處理器和宏(C++17C++20)32.2特性測試宏32.2.1屬性特性測試宏32.2.2語言功能特性測試宏32.2.3標準庫功能特性測試宏33.1協程的使用方法33.3總結33.2協程的實現原理第33章協程(C++20)33.2協程的實現原理33.2.1co_await運算符原理33.2.2co_yield運算符原理33.2.3co_return運算符原理33.2.4promise_type的其他功能34.1顯式自定義類型轉換運算符(C++11)34.2關于std::launder()(C++17)34.3返回值優化(C++11~C++17)34.4允許按值進行默認比較(C++20)34.5支持new表達式推導數組長度(C++20)34.6允許數組轉換為未知范圍的數組(C++20)010302040506第34章基礎特性的其他優化(C++11~C++20)34.7在delete運算符函數中析構對象(C++20)34.8調用偽析構函數結束對象聲明周期(C++20)34.9修復const和默認復制構造函數不匹配造成無法編譯的問題(C++20)34.10不推薦使用volatile的情況(C++20)34.11不推薦在下標表達式中使用逗號運算符(C++20)12345第34章基礎特性的其他優化(C++11~C++20)34.13總結34.12模塊(C++20)第34章基礎特性的其他優化(C++11~C++20)35.1可變參數模板的概念和語法35.2形參包展開35.3sizeof...運算符35.4可變參數模板的遞歸計算35.5折疊表達式12345第35章可變參數模板(C++11C++17C++20)35.6一元折疊表達式中空參數包的特殊處理35.7using聲明中的包展開35.8lambda表達式初始化捕獲的包展開35.9總結第35章可變參數模板(C++11C++17C++20)36.1允許使用typename聲明模板形參36.3總結36.2減少typename使用的必要性第36章typename優化(C++17C++20)37.1允許常量求值作為所有非類型模板的實參37.3允許函數模板的默認模板參數37.2允許局部和匿名類型作為模板實參第37章模板參數優化(C++11C++17C++20)37.4函數模板添加到ADL查找規則37.5允許非類型模板形參中的字面量類類型37.6擴展的模板參數匹配規則37.7總結第37章模板參數優

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論