CodeGym
AI Academy
促銷
CodeGym University
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題

課程

  • 評論
  • 關於我們
開始
開始學習
立即開始學習
  • My Progress
  • Courses
  • 任務地圖
  • 課程
  • CTAD:類模板參數推導

    C++ SELF
    等級 57,課程 0
    解析 CTAD( Class Template Argument Deduction)── C++17+ 的一個機制,允許在創建類模板物件時不用手動寫出模板參數:編譯器從構造函數的參數中推導出它們。通過 std::pair、 std::array、 std::vector 的例子討論優點與陷阱( {} vs ()),然後在自己的代碼中應用 CTAD(模板 Box<T> 與小例子 TaskTracker),並鞏固常見錯誤。
    可用
  • 典型陷阱 — auto x { 1 } vs auto x = { 1 }

    C++ SELF
    等級 57,課程 1
    我們會說明,為什麼大括號 {} 和 auto 放在一起時,可能會突然改變推導出的型別:有時得到的是普通的 int,有時卻會變成 std::initializer_list<T>。我們會用範例展示各種「症狀」,例如突然出現的 .size()、與字串常值相關的陷阱,以及如何用正確方式明確固定容器型別( std::vector<std::string>)。
    可用
  • 為什麼需要 concepts

    C++ SELF
    等級 57,課程 2
    我們來分析為何「泛用」的 template 幾乎總是隱含有額外要求(運算子 +、 *、方法 size()、函式 begin()/ end())、為何在實例化時會出現一大串錯誤,還有 concepts 與 constraints 如何把契約在簽名中顯示出來,並把診斷推近呼叫處。在 Transaction、 sum2 與 safe_square 的範例中展示效果並剖析典型錯誤。
    可用
  • 最簡單的 concept 與 requires

    C++ SELF
    等級 57,課程 3
    解析在 C++20/23 中,如何不再讓模板接受任意類型,而是事先通過 concept 和 requires 描述契約: requires-expression( requires(...) { ... })與 requires-clause(… requires MyConcept< T>)有何差別,如何構造最小的 HasSize 與 Addable,以及為何寫成 requires( T x) 可能會不小心要求可複製性(並「破壞」 std::unique_ptr)。
    可用
  • 標準 concepts — std::integral, std::floating_point, std::ranges::range

    C++ SELF
    等級 57,課程 4
    解析為何在 C++23 中把標準的 concepts 作為模板的契約: constraints 如何在編譯期「篩選」不合適的類型,整數( std::integral)和浮點( std::floating_point)的限制如何不同,以及如何透過 std::ranges::range 將演算法泛化到任意序列。實際操作中會組裝一個簡易版的 DataBox 並討論典型錯誤。
    可用
學習
  • 註冊
  • Java 課程
  • 題目協助
  • 價格
  • Java 語法
社群
  • 用戶
  • 文章
  • 論壇
  • 聊天
  • 成功故事
  • 動態
  • 聯盟計畫
公司
  • 關於我們
  • 聯絡方式
  • 評價
  • 新聞中心
  • CodeGym for EDU
  • 常見問題
  • 支援
CodeGymCodeGym 是一門從零開始學習 Java 程式設計的線上課程。這門課程是初學者精通 Java 的完美方式。它包含超過 1200 題、具即時檢驗功能,以及涵蓋 Java 基礎理論的必要範圍。為了幫助你在學習上成功,我們實作了一系列激勵功能:測驗、程式專案、關於有效學習的內容,以及 Java 開發者職涯相關內容。
追蹤我們
介面語言
English Deutsch Español हिन्दी Français Português Polski বাংলা 简体中文 मराठी தமிழ் Italiano Bahasa Indonesia
繁體中文
Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
"程式設計師是培養出來的,不是天生的" © 2026 CodeGym
MastercardVisa
"程式設計師是培養出來的,不是天生的" © 2026 CodeGym