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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • virtual/override — 动态多态

    C++ SELF
    等级 51,课时 0
    解析 C++ 中的动态多态:为什么基类需要 virtual 方法、通过 Base &/ Base * 如何发生“虚拟调用”、静态类型与真实类型有何区别,以及为什么 override 是防止“几乎一致”的签名的保护。最后 — 一个包含操作( Action)的实用示例并分析常见错误。
    可用
  • Object slicing — Base b = Derived{} 破坏多态

    C++ SELF
    等级 51,课时 1
    解析 C++ 中的 object slicing:为什么“按值存储基类对象”( Base ← Derived)会“切掉”派生类并关闭虚调用,slicing 在参数和容器中(例如 std::vector<Base>)如何出现,以及如何通过 const Base & 和 std::unique_ptr 正确设计接口和存储。
    可用
  • 虚析构函数

    C++ SELF
    等级 51,课时 2
    我们来分析,为什么析构函数是类契约的一部分,以及当对象通过基类指针/所有权被销毁时会发生什么:对 delete 于 Base* 和 std::unique_ptr<Base>,都必须调用正确的销毁链。我们展示没有 virtual 析构函数时的危险情况,给出规则 virtual ~Base() = default,添加一张选择图,并分析典型错误以及使用 override 的规范。
    可用
  • final 与禁止继承 — 何时有用

    C++ SELF
    等级 51,课时 3
    我们来分析在 C++ 中为何要对类和虚方法使用 final:禁止继承如何保护不变式、为什么组合 override final 可以固定契约、如何设计“基类可扩展 — 叶子为 final” 风格的继承层次,以及为什么在通过 std::unique_ptr< Command> 持有时 final 并不能取消 virtual 析构函数的必要性。最后 — 常见错误与一个实用的 CLI 命令示例。
    可用
  • 多态的代价

    C++ SELF
    等级 51,课时 4
    我们来拆解 C++ 中动态多态的“成本”:通过 Base&/ Base* 进行虚调用与普通调用有何不同,为什么一旦用了 virtual,几乎不可避免地就会牵涉所有权与生命周期(例如 std::unique_ptr),基类契约如何把代码绑定在一起并抬高维护成本,以及多态究竟在什么情况下才真正值得使用。最后,我们会比较几种替代方案: enum class + switch、通过 std::function 用 lambda 传递行为,以及通过 std::variant 处理封闭类型集合。
    可用
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