学 C++: 编程课程
学 C++: 编程课程 — 在手机上编写、编译并运行 C++ 代码
学 C++: 编程课程 是一款免费的 iOS 和 Android 应用,面向初学者、计算机科学专业学生以及希望通过编写代码来学习 C++ 的开发者。内置编辑器会将你的代码发送给真正的 GCC 编译器,并显示输出和退出代码;AI Mentor 则会把编译器错误转换成通俗易懂的说明。51 门课程和 200+ 个短课时将带你从第一个 cout 一直学到类、STL、移动语义和 C++20。
- 价格
- 免费,可升级至 Pro
- 平台
- iOS 和 Android
- 语言
- 22
- 年龄分级
- 4+
- 需要
- iOS 15.1 或更高版本
- App Store
- 4.9 ★ (7)


在学到第十二课之前,指针确实很吓人。
C++ 常被认为难以学会,但很大一部分原因在于人们一开始就把所有内容一股脑展示出来:第一天就讲所有权、堆、模板和 STL。分成 51 门短课程后,同样的内容会循序渐进地展开,而每个概念最终都会落到你亲自编译并运行的代码上。
这是什么
学 C++: 编程课程 是一款免费的 iOS 和 Android 应用,从你的第一个 cout 开始,带你学习类、STL、移动语义和现代 C++20。应用包含 51 门课程和 200+ 个短课时,分为五条学习路线(基础、内存、对象、STL 和构建真实程序);配备可在真正的 GCC 编译器上编译代码的编辑器、20 个引导项目、60 个编程任务,以及带错误翻译功能的 AI Mentor。
应用内
界面展示





课程
C++ 课程涵盖哪些内容
来自应用自有课程体系的 51 门课程,内容从编译第一个程序一直到无锁并发和协程。
语法、字符串与控制流
从配置编译器和运行第一个程序开始,逐步学习变量和类型推导、std::string 与 C 风格 char 数组的区别、输入输出流,以及后续每门课程都会用到的控制流模式。
结构体、向量与迷你项目
介绍结构体和类,学习数字与数学运算、向量和动态数组、按引用传递,以及通过小型实践项目将这些知识结合起来。
内存、RAII 与更安全的原始指针替代方案
学习栈与堆的内存模型、RAII 和资源管理、异常处理与 noexcept、const 正确性、安全使用指针,以及用智能指针作为手动 new 和 delete 的现代替代方案。
现代类型、容器与面向对象设计
学习枚举、联合体和 std::variant、std::optional 与 std::expected、std::string_view 与 std::span、关联容器和 unordered_map 哈希、继承与多态,以及为用户定义类型重载运算符。
构建工具、文件 I/O 与标准库
学习使用 CMake 构建项目和进行包管理,使用 fstream 进行文件 I/O,使用 chrono 库处理时间,以及通过 regex 头文件进行模式匹配,掌握将代码连接到文件系统和时钟的 C++ 内容。
STL 与现代 C++11 到 C++20
全面了解 C++11 到 C++20 的变化、移动语义和右值引用、lambda 与 std::function、STL 算法、迭代器和范围,以及使用 sanitizer 进行调试。
模板、性能与系统编程
学习并发原语、模板特化和 SFINAE、高级模板与元编程、C++20 concepts、性能分析,以及如何设计库的公共 API。
高级并发与协程
学习在互斥锁速度不够时使用的无锁编程和原子操作,以及 C++20 协程——这是语言中最新加入的功能,因此放在最后讲解,因为前面的所有内容都是学习它的前置知识。
工作原理
一次 C++ 学习过程是怎样的
每次学习都会将一个短课时与可运行的代码结合起来,再配合几个每日练习,让语法保持熟练。
阅读一个短课时
打开一门课程,学习一个关于 struct、引用或智能指针等主题的单独课时。第一门课程免费,你可以先感受课程内容,再决定是否继续。
编写、编译并运行代码
在移动编辑器中输入代码并运行。真正的 GCC 编译器会构建代码并返回输出和退出代码;对于读取 cin 的程序,你还可以输入数据。由于编译器位于远程服务器上,运行代码需要网络连接。
通过每日练习和 AI Mentor 保持敏锐
预测五个短程序的输出,在每日 bug 挑战中修复一个出错的程序,或参与一场 60 秒 Syntax Sprint。遇到难以读懂的错误时,将它粘贴到 AI Mentor 中,即可获得一句话解释以及需要修复的代码行。
包含内容
应用包含的内容
51
门课程和 200+ 个课时
课程地图将课程分为五条学习路线:基础、内存、对象、STL 和构建真实程序。学习主题从变量和流开始,逐步涵盖指针、RAII、模板,以及 CMake、并发和协程。
GCC
编辑器中的真正编译器
代码由真正的 GCC 编译器构建,而不是由模拟器处理。你可以查看输出和退出代码,为读取 cin 的程序输入数据,并通过一次点击再次运行。每个运行过的程序都会被保存。
3/day
三种每日练习习惯
预测输出(每天五个短程序,在编译器给出结果前先作答)、每日 bug 挑战(提供免费提示),以及 60 秒 Syntax Sprint(通过一次点击回答问题)。
20
个引导项目
一步步构建真实程序,例如库存管理、银行账户、使用多态的图形、模板栈、RPN 计算器、链表和状态机。
AI
AI Mentor 和错误翻译器
卡在指针问题上,或被一大串模板错误难住了?粘贴错误信息,即可获得一句话解释;也可以用通俗语言向 AI Mentor 提出任何问题。
60
个任务和一项全球挑战
60 个从易到难的编程任务、每天一个新的编程问题,以及 World Coding Challenge;每天进行三场全球实时回合,设有排行榜,此外还有连续学习记录、XP 和提醒功能。
背景
为什么 C++ 至今仍在运行那些不能容忍速度慢的软件?
C++ 会直接编译成机器代码,让程序员可以直接控制内存,因此代码与硬件之间几乎没有任何阻隔。这就是为什么几十年前高级语言出现之后,Unreal 等游戏引擎、高频交易系统、机器人固件以及许多操作系统组件至今仍使用 C++ 编写。这种控制力也正是 C++ 初学起来困难的原因:C++ 程序必须明确说明一个值存放在哪里,以及由谁负责释放它;而这些工作在 Python 或 JavaScript 中都会被隐式处理。
栈与堆内存模型
栈内存在函数返回的瞬间会自动释放;堆内存则会一直存在,直到某个程序明确将其释放。初学者经常遇到的许多 bug,例如悬空指针、内存泄漏,或访问已释放内存导致的崩溃,都可以追溯到混淆了这两者。
RAIIC++ 自带的安全网
资源获取即初始化(Resource Acquisition Is Initialization)会将资源的生命周期与对象的构造函数和析构函数绑定起来,因此对象离开作用域时,资源就会自动释放。智能指针就是 RAII 在内存管理中的应用,而这一惯用法让现代 C++ 比它所取代的裸指针代码安全得多。
STL语言之下的工具箱
标准模板库包含 vector、map 和 unordered_map 等容器,以及已经实现排序、搜索和转换功能的迭代器与算法。与其亲手编写链表,不如直接使用 STL;这正是 C++ 不再像手工劳动的转折点。
模板适用于任何类型的代码
模板可以让一个函数或类适用于编译器能够在编译时解析的任何类型,而且不会产生运行时开销。STL 本身就是建立在模板之上的,这也是 C++ 库能够兼具通用性与高性能的原因。
是否适合
适合哪些人——不适合哪些人
如果你符合以下情况,就很适合
- 想把 C++ 中最难的部分——指针、堆和模板——逐一学习,而不是一次性塞进一本密集的手册
- 正在学习计算机科学,并完成以 STL 和基本数据结构为前提的课程作业
- 准备从事游戏、嵌入式或系统开发,希望真正理解内存模型
- 来自 Python 或 Java,想了解内存中实际发生了什么
- 相比搜索千篇一律的论坛回答,更愿意把真实的编译器错误粘贴给 AI Mentor
如果你符合以下情况,这不是适合你的工具
- 需要在没有网络连接的情况下运行代码:程序会在远程 GCC 编译器上进行编译
- 目前需要完整的桌面工具链,例如多文件 CMake 项目、大型外部库和调试器,而这些工具更适合在电脑上使用
- 想免费获得全部 51 门课程:第一门课程和一组每日练习免费,Pro 可解锁其余内容
- 已经是专业 C++ 开发者,需要的是参考资料,而不是按顺序学习的课程
问题
常见问题
学 C++: 编程课程 是什么?
学 C++: 编程课程 是一款免费的 iOS 和 Android 应用,通过短课和内置代码编辑器学习 C++ 编程;代码会在真实的 GCC 编译器上进行编译。它适合初学者、计算机科学学生、游戏和系统开发者,以及任何正在为编程课程做准备的人。界面支持 22 种语言。
学 C++: 编程课程 免费吗?
它可以从 App Store 和 Google Play 免费下载,也可以免费开始使用。第一门课程、每日 Predict the output 练习、每日 bug hunt、每天三轮 Syntax Sprint、首个引导项目、两个任务、每日编程题、世界编程挑战,以及每天一个 AI Mentor 问题均可免费使用。Pro 可解锁全部课程、任务和项目、无限次 Syntax Sprint、完整的 AI 工具、证书考试以及无广告体验。
我可以在手机上编译并运行 C++ 吗?离线时能用吗?
可以,你能在应用的编辑器中编写 C++,并直接在手机上运行。真实的 GCC 编译器会构建代码并返回输出结果和退出代码,读取 cin 的程序也可以接收你输入的内容。由于编译器位于远程服务器,运行代码需要互联网连接。大型多文件 CMake 项目更适合在电脑上构建。
它适合哪些人?涵盖哪些内容?
它适合将 C++ 作为第一或第二门语言学习的初学者、C++ 课程的学生、游戏和系统开发者,以及希望理解内存的 Python 或 Java 开发者。51 门课程涵盖变量、字符串、流、控制流、结构体和类、向量、引用、指针、RAII、智能指针、模板、lambda、STL、文件 I/O、CMake、并发和协程。
Predict the output、Bug hunt 和 Syntax Sprint 是什么?
它们是三种每日 C++ 练习习惯。Predict the output 每天提供五个简短程序,要求你在编译器给出结果前先作答。Bug hunt 每天提供一个有问题的程序,你需要修复它,并使用编译器验证结果,同时还会提供免费提示。Syntax Sprint 是持续 60 秒的一键语法答题,你可以努力打破自己的最高分。
为什么 C++ 中的指针和栈与堆的区别这么难?
大多数语言会替你决定值存放在哪里以及何时释放;而 C++ 要求你自己做决定,这正是难点的根源。指针只是一个保存另一个值地址的变量,但混淆栈和堆会导致悬空指针、内存泄漏和崩溃。应用会将内存模型、RAII 和智能指针作为独立课程进行讲解。
什么是 RAII?为什么现代 C++ 更偏好它,而不是手动使用 new 和 delete?
RAII,即 Resource Acquisition Is Initialization(资源获取即初始化),将资源的生命周期与对象的构造函数和析构函数绑定,因此对象离开作用域时资源会自动释放,不必担心忘记调用 delete。智能指针就是 RAII 在内存管理中的应用;从原始 new 和 delete 转向智能指针,是现代 C++ 中最重要的安全改进之一。
我应该先学习 STL,再编写自己的数据结构吗?
通常应该。标准模板库已经提供了经过测试的向量、映射、集合、迭代器和算法,因此你会先学会使用 std::sort,而不是重新实现它。掌握基础知识后,应用仍会在引导项目中让你构建链表、模板栈和其他数据结构。
它有助于准备 C++ 面试吗?
它能帮助你进行实践训练。Predict the output 和 bug hunt 会训练你仔细阅读代码的能力,STL 课程涵盖面试经常涉及的容器和算法,而链表、模板栈和 RPN 计算器等引导项目则会练习常见数据结构。它是一门课程,而不是专门的面试题库。
App Store 上的 Learn C++: Code & Practice 是同一个应用吗?
是的。App Store 上的名称是 Learn C++: Code & Practice,Google Play 上的名称是 学 C++: 编程课程,但这是同一个应用,包含相同的 51 门课程。完成最终考试后会获得结业证书;该证书会记录你的学习成果,但不属于认可的学历或资质。
更多 CoddyKit 产品
可在 iOS 和 Android 上使用。