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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • Pure virtual (= 0) 与抽象类

    C++ SELF
    等级 52,课时 0
    我们来解析在 C++ 中抽象类型如何通过 pure virtual 方法工作:语法 = 0 的含义、为什么不能直接创建抽象类、如何通过 override 正确实现“接口”、以及为什么多态基类需要虚析构函数。实践部分 — 使用带有不同打印策略的 Tasky 小示例。
    可用
  • 接口契约

    C++ SELF
    等级 52,课时 1
    我们讨论为什么接口需要“契约”(前置条件和后置条件)、为什么“精简”接口更易实现和测试、如何通过 const、 std::string_view、 std::optional 和 [[nodiscard]] 在签名中固定契约,如何在不使用异常的情况下诚实地描述失败,以及状态不变式如何影响行为。最后 — 给出 TaskBoard 的实践示例并分析典型设计错误。
    可用
  • 通过抽象持有 — std::unique_ptr<IService>

    C++ SELF
    等级 52,课时 2
    我们讲解实用模式“通过抽象持有”:如何以接口形式保存服务,形式为 std::unique_ptr < ILogger >, 为什么需要为多态删除提供 virtual 析构函数, std::move 是如何工作的,“空指针”的含义( nullptr),以及如何在示例小应用 TaskApp 中使用,包括 ConsoleLogger/ NullLogger 的实现和集合 std::vector < std::unique_ptr < IService >> 的用法。
    可用
  • 根据配置/CLI 的实现工厂

    C++ SELF
    等级 52,课时 3
    讲解如何通过工厂根据设置(配置/CLI)集中选择实现:将“脏”的字符串输入与类型安全的 enum class 分离,将模式解析为 StorageKind,然后通过 make_storage 创建具体存储,返回 std::unique_ptr<ITaskStorage>。以 TaskTracker 为例比较基于 std::vector 和 std::map 的实现,讨论架构细节和常见错误。
    可用
  • RTTI 作为最后的手段

    C++ SELF
    等级 52,课时 4
    我们把 C++ 中的 RTTI 当作处理罕见情形的“灭火器”来讲:静态类型和动态类型有什么区别,如何通过 dynamic_cast 做安全转换(检查 nullptr 并要求基类为多态即有 virtual 方法)、何时适合使用 typeid,以及为什么不应把 std::type_info:: name() 当作稳定标识符。以 ITaskStorage 为例演示如何通过在接口上添加虚方法 debug_describe( std::ostream&) 用“正常”的多态替代 RTTI。
    可用
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