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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • =default — 将操作作为 API 的一部分生成

    C++ SELF
    等级 45,课时 0
    我们来解析为什么在 C++ 中要显式写出 = default:如何在添加了用户定义构造函数后“恢复”默认构造函数,如何将复制/赋值作为类型契约的明确部分,为什么空函数体 {} 并不等同于默认生成,以及在何处更适合放置 default 定义(在类型内部还是在 .cpp 中),以小型示例应用 TaskBox 说明。
    可用
  • `=delete` — 通过禁止复制来保护设计

    C++ SELF
    等级 45,课时 1
    我们来解析 = delete 与操作符 delete 有何不同,删除函数如何保护类型接口,为什么要禁止默认构造函数,如何通过删除拷贝构造函数和 operator= 正确实现 non-copyable 类型,以及如何通过删除不希望的重载来管理 API。最后 — mermaid 图示决策流程并分析常见错误。
    可用
  • 不可复制类型:unique ownership、类似 mutex 的排他场景

    C++ SELF
    等级 45,课时 2
    我们来分析为什么禁止复制是 C++ 类型契约的一部分:通过 std::unique_ptr 实现的唯一所有权,使用 std::ofstream 等系统句柄的所有权案例,以及类似 mutex 对象的“排他性”。学习如何设计诚实的签名(读取用 const T &,修改用 T &),理解关于 = delete 的错误,并通过“应用上下文”划定所有权边界。
    可用
  • Rule of Five:比 Rule of Zero 更好?

    C++ SELF
    等级 45,课时 3
    分析一个实用原因:为什么在 C++ 中“一个析构函数”经常会触发多米诺效应:默认拷贝会拷贝资源的“句柄”(例如 T *),从而导致 double-free。说明何时会出现 Rule of Five,哪五个特殊函数对此负责(拷贝/移动),以及为什么在现代 C++ 中更常见的是带有 RAII 成员的 Rule of Zero(例如 std :: vector, std :: string, std :: unique_ptr)或通过 = delete 诚实地禁止拷贝。
    可用
  • Move 构造函数与 move 赋值运算符

    C++ SELF
    等级 45,课时 4
    我们来解析为什么 C++ 需要 move 语义、资源所有权的迁移(而不是数据复制)如何工作、rvalue 引用 T&& 的含义、为什么 std::move 本身并不“移动任何东西”,只是允许移动,以及如何为手动管理内存的类型正确编写 move‑ctor 和 move‑assign(以拥有 Buffer 的示例,使用 new []/ delete [])。最后 — moved‑from 状态的契约、copy vs move 的比较以及常见错误(内存泄漏、double‑free、移动后使用对象)。
    可用
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