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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • operator<=> — C++23 中三路比较的思想

    C++ SELF
    等级 50,课时 0
    我们来讲解为什么类型在 C++ 中需要为 STL 提供“自然”顺序,三路比较 operator<=>(spaceship)是如何工作的, = default 有什么作用,如何手动地优雅地指定顺序(以及为什么比较结果通过 != 0 来检查),并且如何使顺序与 operator== 一致。通过小型示例应用 TaskBox 加深理解并讨论常见错误。
    可用
  • 操作符 vs 比较器

    C++ SELF
    等级 50,课时 1
    讲解何时将比较“嵌入”类型,通过 operator== 和 operator<=>,何时更适合通过 std::sort 使用局部比较器来定义规则。以 Task 模型为例讨论“同一性”的含义(按 id 相等还是按所有字段相等)、通过 std::find 和 std::find_if 的查找,以及典型的设计错误和“不纯”的比较器。
    可用
  • “has‑a” vs “is‑a”:设计工具

    C++ SELF
    等级 50,课时 2
    解析如何在类设计中区分 is‑a 与 has‑a 关系:何时适合“是”,何时更适合“包含/使用”。以教学用的 todo 应用为例展示组合和委托:把 TodoApp 作为协调者, TaskRepository 作为存储, Printer 和 CLI 层负责 I/O。并单独说明组合的形式(按值、按引用、 std::unique_ptr)及常见错误。
    可用
  • 模块分离:model / storage / parser / cli

    C++ SELF
    等级 50,课时 3
    我们把控制台应用按职责划分模块: model(数据与不变量)、 storage(操作与存储)、 parser(字符串 → Command)、 cli(输入/输出与协调)。以 todo 管理器为例,追踪一条命令的路径,设计 Task 和 TaskRepository,用 std::istringstream 编写 parse_command,并在“轻”接口中把各部分连接起来,避免在存储层打印或在解析器里执行逻辑。
    可用
  • 依赖与反转

    C++ SELF
    等级 50,课时 4
    我们来分析为什么隐藏的依赖(比如直接使用 std::cout)会让代码变得脆弱,如何通过反转来“展开”责任(在 main() 中组装),以及如何通过 std::istream &/ std::ostream &、 TaskRepository & 和独立组件( Parser、 Printer、 CLI)来定义诚实的契约。另有讨论引用、指针、所有权( std::unique_ptr)以及通过函数实现的“软”反转( std::function)。
    可用
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