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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • RAII 原则 — 将资源放入拥有者对象内

    C++ SELF
    等级 42,课时 0
    剖析 C++ 中的 RAII 原则:什么被视为“资源”,为什么将所有权绑定到对象的生命周期(scope)更安全,析构函数如何通过 new 确保释放(以及为什么数组要用 delete []),还有哪些错误最常破坏这种方法 — 重复释放、混淆 delete/ delete []、分发“裸”指针以及手动调用析构函数。
    可用
  • 标准库中的 RAII:流与容器

    C++ SELF
    等级 42,课时 1
    分析 RAII 如何“内嵌”在 C++ 标准库中:作为内存所有者的容器 std::string 与 std::vector,作为缓冲区和文件描述符所有者的流( std::stringstream, std::ifstream/ std::ofstream),以及通过 std::mutex 与 std::lock_guard 实现的锁管理。再加上一个不使用手动 new/ delete 的 “TaskBook” 小示例,以及常见错误清单:对容器元素的“长生命”指针、在 RAII 之上手动调用 close()/ unlock()、以及过宽的临界区等问题。
    可用
  • modern C++ 规则:在应用代码中避免 delete

    C++ SELF
    等级 42,课时 2
    解析 practical 规则 modern C++:如果在应用代码中出现了 delete,这几乎总是所有权出现问题的信号。学习通过容器( std::vector、 std::string)避免手动释放内存,使用“非拥有”指针( T * 作为可空引用)、通过值返回结果,以及将资源释放移入 RAII 所有者(析构函数)。最后 — 决策小流程图和常见错误列表。
    可用
  • std::unique_ptr 和 std::make_unique

    C++ SELF
    等级 42,课时 3
    我们分析为什么“裸”指针 T * 只保存地址而不表达所有权,这正是 RAII 方法有意义的地方;讲解 std::unique_ptr<T> 如何保证唯一所有者并在析构时自动释放资源,以及为什么应该通过 std::make_unique 创建对象,而不是直接使用 new。我们还会讨论空状态( nullptr)、使用 if ( p) 的检查、一个包含可选详情的实际示例,以及常见错误(手动 delete、解引用空指针)。
    可用
  • 所有权转移 — std::move

    C++ SELF
    等级 42,课时 4
    我们讨论为什么 std::unique_ptr 本质上不可拷贝(用于防止 double-free), std::move 实际上做了什么(把表达式转换为 rvalue,而不是“点击就移动”),move 赋值是如何工作的,移动后哪种状态被视为正常( nullptr),以及在转移所有权时最常犯的错误(使用 moved-from 对象、尝试从 const 移动、忘记包含头文件 <utility>)。
    可用
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