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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 所有权环 — 如何出现“无需 delete” 的泄露

    C++ SELF
    等级 44,课时 0
    我们讲解为什么即便使用 std::shared_ptr 也可能发生内存泄露而没有任何一个 delete:所有权环如何形成、为什么引用计数不会降到 0、如何通过析构函数诊断问题,以及为什么用手动 reset() 去“修复”是危险的权宜之计。以 Task ↔ Column 的示例引出非拥有引用和 std::weak_ptr 的作用。
    可用
  • std::weak_ptr — 观察者与打破循环引用

    C++ SELF
    等级 44,课时 1
    我们来解析在 C++ 中为什么需要 std::weak_ptr:如何保存“用于导航的引用”而不拥有对象、为什么由 std::shared_ptr 组成的循环会导致内存泄漏、如何通过 lock() 安全地访问对象,以及如何基于 Project– Task 模型来设计“拥有/观察”关系。
    可用
  • 选择规则:默认使用 unique_ptr,必要时使用 shared_ptr

    C++ SELF
    等级 44,课时 2
    讲解 C++ 中的所有权实践规则:为什么默认应选择 std::unique_ptr,在哪些情况下通过 std::shared_ptr 的共享所有权才真正合理,为什么需要 std::weak_ptr 来打破循环,以及如何通过 API 中的类型直接“读取”引用的角色(拥有者/共同拥有者/观察者)。最后 — 一张选择表、一个简易流程图和常见错误。
    可用
  • 编译器会生成哪些特殊成员函数以及何时生成

    C++ SELF
    等级 44,课时 3
    我们来分析编译器在什么情况下会自动生成哪些 special member functions:默认构造函数 T()、析构函数 ~T()、拷贝构造函数 T(const T&) 和拷贝赋值 operator=。另外讨论为什么操作可能会被 implicitly deleted(例如因为包含字段 std::unique_ptr)以及这如何与资源所有权模型相关。
    可用
  • Rule of Zero — 设计不管理资源的类型

    C++ SELF
    等级 44,课时 4
    解析 Rule of Zero 的实用含义:如何设计“类似值(value-like)”的类型而不编写自定义析构函数和拷贝逻辑,而是依赖于像 std::string 和 std::vector 这样的 RAII 字段。讨论为什么通过 * ( T*) 持有所有权以及手动使用 new/ delete 常常导致错误,以及如何通过 std::unique_ptr 和 std::shared_ptr 表达清晰的所有权语义。
    可用
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