AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题
课时
评论
关于我们
开始
开始学习
立即开始学习
我的进度
课程
任务地图
课程
C++
C++
级别 26
每个
.cpp
单独编译
C++ SELF
等级 26,
课时 0
讲解 C++ 的分离编译:为什么编译器把每个
.cpp
当作独立的“世界”来处理,什么是
翻译单元
(文件加上通过
#include
包含进来的所有内容),为什么“函数在另一个文件里”在没有声明时无济于事,以及如何正确修复类似
was not declared
的错误。最后 — 多文件拆分代码时的常见错误以及如何避免它们。
头文件 vs 源文件:声明与定义
C++ SELF
等级 26,
课时 1
讲解为什么在 C++ 中把代码分为
.hpp
和
.cpp
,
声明
与
定义
(签名 vs 实现体)有何不同,哪些实体应该作为“契约”放在头文件,哪些应该作为“实现”放在源文件。实践中我们把小应用
TaskPad
提取到模块
tasks
,并指出典型错误:签名不匹配、头文件不自洽,以及尝试通过
#include
引入
.cpp
文件。
namespace
— 代码组织与冲突隔离
C++ SELF
等级 26,
课时 2
我们来探讨为什么 C++ 需要命名空间:
namespace
如何帮助在大型项目和引入库时避免命名冲突,如何读写像
ns::name
这样的限定名(包括
std::cout
),嵌套命名空间的结构(例如
app::model
、
app::ui
),如何在不同文件中“继续”同一个
namespace
,以及为什么
main
必须保留在全局可见域。
using 与 using namespace
C++ SELF
等级 26,
课时 3
解析在 C++ 中如何缩短限定名(
std::cout
、
std::string
、
app::cli::print_menu
)而不产生“传播效应”:点式
using
(
using
ns::name
)与指令式
using namespace
有何区别,作用域如何工作,为什么头文件(
.hpp
)需要约束,以及在
.cpp
中应采用哪些实用模式。
仓库结构:include/, src/, tests/ 和 build/
C++ SELF
等级 26,
课时 4
解析实用的 C++ 项目结构:在
include/
、
src/
、
tests/
和
build/
文件夹中应放什么、为什么要将接口与实现分离(模块模型 «模块 =
.hpp
+
.cpp
»)、为什么构建产物不应提交,以及在一个包含单独头文件、实现和“冒烟”检查的迷你项目
Tasky
中这如何体现。
Please enable JavaScript to continue using this application.