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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • Include guards 和 #pragma once

    C++ SELF
    等级 27,课时 0
    我们来分析为什么通过 #include 重复包含头文件会导致重定义错误,预处理器在哪个阶段工作,以及如何使用 #ifndef/ #define/ #endif(include guard)或指令 #pragma once 来保护头文件。在一个小项目上巩固知识并讨论常见错误:遗忘 #endif、宏名不唯一以及保护中的“漏洞”。
    可用
  • “Include What You Use”: 最小化依赖

    C++ SELF
    等级 27,课时 1
    解析实用原则 Include What You Use 在 C++ 中的应用:如何让头文件自包含、避免传递性依赖、分离接口( .hpp)与实现( .cpp)、选择像 <iosfwd> 这样轻量的头而不是笨重的( <iostream>),以及为何把自己的头文件放在第一位很有用。通过 std::string、 std::vector 的示例和小型项目模块,展示如何减少构建时间并提高对重构的鲁棒性。
    可用
  • Forward declaration

    C++ SELF
    等级 27,课时 2
    我们来解析预声明( forward declaration)如何在 C++ 中帮助“瘦身”头文件:在写了 struct/ class X ; 之后编译器到底知道什么,可以在何处使用不完整类型(指针/引用),何处不能使用(按值存储、访问字段、容器),如何构建规则“ .hpp — 声明, .cpp — 重的 #include”,以及哪些典型错误会导致关于 incomplete type 的报错。
    可用
  • 循环依赖 — 如何处理

    C++ SELF
    等级 27,课时 3
    我们来解析什么是 C++ 中的循环依赖(比如 A.hpp 包含 B.hpp,而后者又回头包含前者),为什么 #pragma once 并不会使类型变为“完整类型”,如何阅读关于 incomplete type 的错误信息,以及有哪些实用手段可以打破循环:使用 forward declaration + */ &、把 #include 从 .hpp 移到 .cpp,或者通过 id 来保存关联而不是直接保存对象。
    可用
  • 模板与头文件

    C++ SELF
    等级 27,课时 4
    讲解在 C++ 中使用模板的实用规则:为什么 template 的定义必须在使用处可见,为什么“在 .hpp 中声明,在 .cpp 中定义”会失效,如何正确地将实现保存在 .hpp 或者通过包含的实现文件 .tpp/ .inl 中,以及常见的错误(包括非自包含的头文件、多余的依赖和在头文件中使用 using namespace)。
    可用
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