CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • std::variant: 值作为状态模型

    C++ SELF
    等级 23,课时 0
    讲解 std::variant 如何通过类型表达“结果作为状态”的含义:它与 std::optional 以及 enum class+数据 的组合有什么区别、如何通过 index() 和 std::holds_alternative 检查活动替代项、如何通过 std::get_if 安全地提取值,以及为什么这比使用诸如 -1 之类的“魔法值”要好。最后 — 一个简短的 TodoCLI 示例和常见的使用错误。
    可用
  • std::visit:通过 visitor 处理 std::variant

    C++ SELF
    等级 23,课时 1
    讲解为什么在使用 std::variant 时需要 std::visit:如何避免使用一片«if 树»的 std::get_if,visitor 的实现方式(泛型 lambda、重载、带 struct 的 operator()),如何从 std::visit 返回值,以及如何在带有类型化命令和解析错误的迷你 CLI 任务跟踪器中应用它。
    可用
  • std::expected<T, E> 作为“成功/错误”模型

    C++ SELF
    等级 23,课时 2
    我们来分析为什么类似 - 1 这样的“魔法值”和空字符串会破坏函数契约, std::expected<T, E> 在根本上如何不同于 std::optional<T>,如何通过 std::unexpected 返回错误,以及如何通过检查 if( has_value(), value(), error())有纪律地处理结果。在示例中展示基于 std::from_chars 的无异常数字解析,以及在 CLI 风格应用中如何向上“抛出”错误。
    可用
  • 错误设计 — 代码、消息、上下文

    C++ SELF
    等级 23,课时 3
    解析在 C++23 中实用的错误设计:为什么“错误作为字符串”会很快变成脆弱的代码、如何将错误封装为数据( ErrorCode + 消息 + 上下文)、如何通过 format_error 统一格式化错误,以及如何使用 std::expected 返回“值或错误”。通过示例展示 ParseError/ InvalidInput/ NotFound/ IoError 分类,使用 std::from_chars 进行解析,并在迷你 CLI 中处理错误。
    可用
  • 错误策略

    C++ SELF
    等级 23,课时 4
    解析为什么项目需要统一的错误策略:为什么“工作”函数不应打印诊断信息,如何通过 std::expected 将错误向上抛出,在哪儿以及如何统一格式化消息( format_error),分离 std::cout/ std::cerr 有何用,如何通过 log(...) 引入最小化日志记录,并通过将 ErrorCode → int 映射来集中管理进程退出码。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • 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