- C++新經典:模板與泛型編程
- 王健偉編著
- 2032字
- 2023-09-26 16:17:39
本書介紹
本書面向希望系統學習C++模板與泛型編程、元編程相關開發知識的中高級C++語言開發者,書中所講解的知識具備一定的難度。本書的編寫初衷是幫助讀者解決各種模板與泛型編程中的語法問題,以免讀者在閱讀他人所寫的泛型編程代碼(如C++標準庫代碼、Boost庫代碼)時磕磕絆絆,甚至進行不下去。此外,本書也會對一些比較有商業價值的源碼進行適當的分析和講解,以進一步提高讀者的實戰能力,讓讀者更好地利用模板與泛型編程技術編寫可復用的高質量代碼以及供第三方開發者使用的接口庫。
本書為在C++語言學習道路上有進取心、希望成長為高手的C++程序員所寫。如果您希望能夠通過閱讀諸如C++標準庫、Boost庫等源碼極大地提高自己的開發實力,寫出可高復用的代碼,甚至有志于寫出很棒的程序庫作品供第三方使用,那么毫無疑問,本書將助您在泛型編程方面打下良好的基礎。
泛型編程方面的知識比較龐雜,C++新標準中也不斷增加很多新的語法規則,本書包含C++ 11/14/17標準方面的泛型編程知識。在講解的時候,筆者會以盡量講述最常用的知識為目標,對一些偏難、怪且很少用到的知識不予涉獵,如果讀者有需要,可以自行根據實際情況完善自己的知識體系。
模板與泛型編程方法雖然不如面向對象的程序設計方法常用,但作為一名C++開發者,在整個職業生涯中,總是需要拜讀一些大師的作品促進自己技術上的提升,而在這些作品中,模板與泛型編程方法是司空見慣的,如果沒有這方面的知識積累,就無法讀懂大師的作品。同時,在實際編程中,在提高代碼復用性和減少代碼冗余方面,模板與泛型編程技術也一直有著不可替代的作用,這些都是應該學習好模板與泛型編程技術的重要原因。
本書具有以下比較明顯的特點。
(1)內容比較全面。有筆者前幾本“C++新經典”系列書作為基礎,可以非常平滑地繼續進行本書的閱讀學習,不存在知識體系斷裂導致學習者產生突兀、茫然之感。整本書無論是基礎知識,還是高級知識以及演示范例,所涉及的知識點都非常到位,非常全面。
(2)注重細節,注重基礎,把很多可能讓人覺得比較陌生但基礎性的知識以各種范例的形式展示出來,幫助讀者打下良好的深入學習基礎。
(3)講解難度適宜,范例由淺入深。讀者容易理解,容易消化,讀起來順暢沒有障礙。
(4)目前在國內,支持C++ 11/14/17標準的模板與泛型編程類書還非常少,一些同類書出版的時間大多在十幾年前,比較老舊,這給廣大渴望學習模板與泛型編程開發知識的讀者造成了很大的不便。而本書很好地彌補了目前國內缺少C++ 11/14/17標準發布后的“C++模板與泛型編程”類書的空白,是一本非常具有價值和意義的圖書。
本書共分為7章。
第1章為C++編程環境介紹,搭建C++編程環境并創建一個最基本的能運行的C++程序,詳細介紹Visual Studio中程序的調試方法,為后續書中內容的正常講解鋪平道路。
第2章為模板基礎知識,涉及函數模板、類模板、變量模板、別名模板、可變參模板等諸多的基礎概念以及奇異的遞歸模板模式與混入模式兩種常用的編程手法。
第3章為模板進階知識,以萬能引用概念作為講解起點,進一步介紹函數模板類型推斷和auto類型推斷的概念、完美轉發的概念和實現,通過對標準庫中std::enable_if編譯期的分支邏輯的講解引入SFINAE概念。
第4章為標準庫的典型內容,將介紹一些C++標準庫中典型且常用的函數模板、類模板、別名模板等功能組件及其實現細節,這些基礎組件在模板與泛型編程中會被頻繁使用。
第5章為萃取技術與策略技術。用萃取技術和策略技術生成的諸多模板廣泛分布于C++標準庫中,為程序人員的開發工作提供了極大的方便。第5章將通過諸多范例展示這兩種技術在模板與泛型編程中的實際運用。
第6章為元編程。元編程的主要目的在于將各種計算從運行期提前至編譯期進行,以實現程序運行時的性能提升,是一種增加程序的編譯時間從而減少程序運行時間的一種編程技術。第6章會以兩個經典的范例—typelist(類型列表)和tuple(元組)展示元編程的代碼編寫手法,使讀者對元編程能夠達到的效果有比較深刻的認識。
第7章為標準模板庫代碼,通過模板與泛型編程技術編寫標準模板庫(STL)中list容器以及配套迭代器的源碼,讓讀者對這類核心的STL部件實現機制有更深刻的了解。本章還會對容器中迭代器分類目的進行剖析,最后,通過講解一個算法—find_if的實現源碼讓讀者掌握如何將可調用對象當作算法中的參數使用。
在成書的過程中,筆者參考了大量C++經典著作,并盡最大努力通過網絡尋找一切對本書的書寫有用的資料,通過已有認知進行精挑細選并認真實踐,做到了既不遺漏重要的知識點,又不去涉及太復雜需要耗費相當心力去研究的各種代碼片段(功能組件),這種代碼片段更適合讀者日后在有興趣和必要的情況下慢慢研究。筆者的心愿是通過自己的表達把這些知識更通俗地傳達給讀者,可能讓讀者只花費1/5甚至1/10的精力就能獲得相同的知識,讓讀者能夠憑借本書入門C++模板與泛型編程,有了這樣的基礎,后面的自我提升就是“海闊憑魚躍,天高任鳥飛”了。筆者為本書的編寫付出了數月的時間和極大的心血。在這里,筆者發自內心地感謝諸多C/C++前輩在這個行業中多年的耕耘及對知識的積累和傳播的貢獻,感謝他們的奉獻。
- Visual C++程序設計教程
- Mastering ServiceStack
- C語言程序設計案例精粹
- 小學生C++創意編程(視頻教學版)
- Visual FoxPro程序設計習題集及實驗指導(第四版)
- Java編程的邏輯
- NoSQL數據庫原理
- Mastering React
- Orleans:構建高性能分布式Actor服務
- RubyMotion iOS Develoment Essentials
- QGIS 2 Cookbook
- SQL Server 入門很輕松(微課超值版)
- Visual Basic程序設計全程指南
- Mastering Apache Camel
- 和孩子一起學編程:用Scratch玩Minecraft我的世界