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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • struct vs class: 封装与默认访问权限

    C++ SELF
    等级 48,课时 0
    解析 C++ 中 struct 与 class 之间的关键(也是唯一本质的)区别:默认访问权限( public vs private)以及它如何影响封装。通过 Account 和 Task 两个例子展示为什么要通过方法隐藏状态、如何形成类型的“契约”,以及初学者最常见的错误(忘记写 public :、相信“魔法差异”以及在 } 之后漏写 ;)。
    可用
  • `private`/`public`: 最小化接口

    C++ SELF
    等级 48,课时 1
    我们来解析为什么在 C++ 中需要 public/ private 段,封装如何让对象“不可被随意破坏”,以及为什么最好把 public API 保持得很小。以迷你项目 TaskTracker 为例,演示如何把状态(例如 std::vector)隐藏在有意义的方法后面( rename(), mark_done()),不要通过返回引用 T & 泄露出来,并且把校验逻辑放在类内部。
    可用
  • Getter/Setter:什么时候需要,什么时候有害于设计

    C++ SELF
    等级 48,课时 2
    解析为什么“ getName ()/ setName () 对每个字段都写”在 C++ 中经常把 API 变成噪音,getter 如何通过 const T &(尤其是 T &)泄漏,以及如何用操作方法( rename, mark_done, reopen)替代 setter 来支持不变量,示例为迷你应用 TaskTracker。
    可用
  • 初始化列表:这是正确性问题,不只是风格

    C++ SELF
    等级 48,课时 3
    我们来拆解一下,为什么 C++ 构造函数中的初始化列表并不只是“好看的语法”,而是对象创建正确模型的一部分:字段和基类部分会在构造函数体执行之前完成初始化。我们会比较初始化与赋值,看到哪些场景是必须使用初始化列表的( const 字段和引用),学习如何让对象从“出生”起就满足不变式,并且学会如何把初始化列表与 default member initializer 谨慎地结合使用。最后还会给出一份速查清单和常见错误。
    可用
  • explicit — 在 API 中防止隐式转换

    C++ SELF
    等级 48,课时 4
    我们来分析一下,为什么 C++ 中的单参数构造函数会在不知不觉中创建临时对象并导致“奇怪”的函数调用,关键字 explicit 如何禁止隐式转换, copy-initialization 与 direct/list-initialization 有何不同,为什么默认参数会把构造函数变成“几乎单参数”的,以及如何在像 TaskId 和 Minutes 这样的强类型上使用 explicit 来保护您 API 的语义。
    可用
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