現代 C++ 教學
本教程旨在為有經驗的開發者提供 C++11/14/17/20 新功能的快速參考。內容涵蓋語言易用性提升、執行時間改進、新容器、智慧指針與記憶體管理、正則表示式、並行程式設計,以及 C++20 的預覽。
課程總覽
內容摘要
本教程旨在為有經驗的開發者提供一份快速參考,介紹 C++11/14/17/20 的新功能。內容涵蓋語言易用性提升、執行時期優化、新容器的使用、智慧指標與記憶體管理、正規表示式、並行程式設計,以及 C++20 的預覽。
快速掌握 C++11/14/17/20,邁入現代 C++ 程式設計的大門。
作者: 欧长坤 (Ou Changkun)
致謝: 采用 CC BY-NC-ND 4.0 協議授權,感謝所有 GitHub 貢獻者及相關社群支持。
學習目標
- 使用命令列工具識別並驗證 C++ 編譯器環境與目標架構。
- 解釋 C(C89、C99、C11)與 C++(C++98、C++1x)之間的標準相容性與重疊歷史。
- 透過
extern "C"標頭與多階段編譯工作流程,實現跨語言連結功能。 - 使用
nullptr消除指標歧義,並利用constexpr與if constexpr實作編譯時期邏輯。 - 使用
auto、decltype及型別別名(using)簡化複雜宣告,同時以override與final確保穩固的物件導向設計。 - 利用可變參數模板、折疊表達式與非類型模板參數推導,設計高度通用的程式碼。
- 使用多種捕捉模式(值、引用、運算式、通用)定義並實作 Lambda 表達式。
- 使用
std::function與std::bind建立彈性函數包裝器與部分函數應用。 - 將表達式分類為左值(Lvalues)、純右值(Prvalues)與臨時量(Xvalues),並應用搬移語意(Move Semantics)優化類別資源管理。
- 区分
std::array(固定大小、棧上)與std::vector(動態大小、堆上)的記憶體模型與使用情境。
課程
Lesson
This lesson explores the evolution of C++20, focusing on the "Big Four" features—Concepts, Modules, Coroutines, and Ranges—that shift the language toward a more declarative and efficient programming model. Students will learn how these tools improve code safety, reduce build times, and replace complex template metaprogramming with clearer, constrained syntax.