## 課程介紹
C++,一門聲名在外的老牌編程語言。
作為一門多范式的通用編程語言,它適用的領域非常廣泛,小到嵌入式,大到分布式服務器,到處可以見到 C++ 的身影。從性能上看,C++ 表現也很出色,雖然完成同樣的功能,C++ 需要的代碼行數可能是 Python 的三倍,而性能則可以輕松達到 Python 的十倍以上。此外,其發展前景也非常廣闊,作為未來趨勢的人工智能和機器學習,外衣是Python(模型描述),但是內核還是 C++(高性能運算) 。
但你也可能聽說過 C++ 的另一種評價——復雜、難學、難用。上手和熟練掌握難,應用上容易出錯,被誤用的可能性也很大。還有,C++ 繼發布語言標準的第二版——C++11——之后,它以每三年一版的頻度發布著新的語言標準,每一版都在基本保留向后兼容性的同時,提供改進和新功能。
難且迭代迅速,相信這兩座大山讓很多 C++ 程序員都望而生畏。可事實真的如此嗎?你有沒有深入思考過到底什么樣的學習方式才最適合 C++?面對那么多的新功能、單詞和語法規則,要記嗎?哪些才是重點?記住了又怎么用呢?
針對以上這些問題,吳詠煒將結合自己過去 20 多年累積的工作經驗,節選現代 C++ 的重要新特性,帶你進入編程實戰,手把手帶你重新理解 C++。相信通過本專欄的學習,你能把 C++ 當作一種實用的語言,能用它寫出抽象但自然、可維護的高性能代碼,并用它去更好地解決項目中的實際問題。
具體內容上,專欄分為以下四部分:
第一部分——基礎篇,講解現代 C++ 中的最重要特性,幫助你理解基礎概念;
第二部分——提高篇,講述幾個獨立的專題,幫助你掌握 C++ 中的一些高級技巧;
第三部分——實戰篇,討論實際的工具和第三方庫,幫助你打磨手頭的兵器庫;
第四部分——未來篇,討論 C++20 中即將引入的一些新特性,幫助你培養前瞻性。
## 學習路徑圖

# 特別說明:
1.專欄中的內容大部分時間都會使用不超過 C++17 標準的語言特性,最后在講到 C++20 新特性時,某些實驗功能可能會要求某個特定的編譯器,更多細節請參見[\[課前必讀\]](https://time.geekbang.org/column/article/169198)。
2.專欄涉及到的都是較短的代碼,因此不需要工程文件也可以編譯運行。這里建議你熟悉編譯器的命令行,來快速編譯代碼。
3.為了方便你編譯,可編譯的完整示例代碼已經放在[GitHub](https://github.com/adah1972/geek_time_cpp)上。如果你使用 CMake,還可以用它來生成你使用的平臺所需的工程文件。
4.專欄中案例+代碼偏多,不建議僅通過音頻學習,“文稿+音頻+動手實踐”為最佳學習方式。
## 課程目錄
