前言
为什么写这本书
受某位提问箱的匿名朋友的建议,我建立了这份文档,用于记录我所希望的一套 C++ 教学方案。请注意,我只负责讲解 C++ 语法层面的知识。对于超过语法的问题(比如算法设计、计算机系统等)不在本书的讨论范围之内;书中所引用的算法仅作为例子使用。尽管许多批评家说这是不负责任的行为,但是我认为一份教材应当只做好一件事情。有关算法部分的学习,我建议阅读本书的前五章(第〇章 ~ 第四章)作为 C/C++ 的基础,然后选用任意一本算法教材进行学习即可。
最初我计划将这些想法纳入尚未成型的北京大学《计算概论(A)》教材中,但是由于指导教师没有(时间或精力)领导团队,我只得暂时将这些想法暂且记录在这里。除此之外,我还将《程序设计实习》中语法部分的内容以及更多的现代 C++ 编程方法以个人讲解的方式一并给出。故总的来说,您将看到如下内容:
- 第〇章:非常简单的基本计算机知识概述;内容属于北京大学《计算概论(A)》“计算机基础知识”部分。
- 第一 ~ 四章:用 C++ 的语法讲述 C 语言知识;教学思路依照北京大学《计算概论(A)》课程,少量穿插新语法特性。其性质属于教材草案。
- 第五 ~ 八章:讲解 C++ 面向对象语法,但以实用为主、思想为辅;大体框架依照北京大学《程序设计实习》课程。其性质属于知识整理。
- 第九 ~ 十章:讲解一些必要的 C++ 相关知识。
- 第十一 ~ ? 章:讲解 C++ 更深入的语法,包括函数式编程等。其性质属于读书笔记。
尽管我将此项目命名为“谷雨同学的 C++ 教程”,但由于未经任何实践的教学,我并不能考察、估计这份“教程”对初学者所能提供的帮助作用。相对地,本文更倾向于那些准备或正在接受传统课内学习的学生。再次提醒,我只是在此循序渐进地描述了 C++ 语法标准的规定;若要想熟练运用 C++ 编写程序,仅仅靠这份文档是完全不够的。只有将教程中所提到的语法和技术投入到实践中去,才能真正掌握这门语言。
为了防止版权问题,此文档未经授权禁止转载。
联系方式
如果您对书中的内容存在疑问、建议或意见,您可以发起 Github Issue 或者通过邮箱 guyutongxue@163.com 联系我。谢谢您的支持与配合。
一些约定
本文中用“我”来指代作者,用“你”来指代读者;“我们”一词一般用于指明过去或接下来需要做的事情,仅用于补足主语,没有更多意义。本文的一些地方可能用词不是特别严谨,还请各位读者见谅。
本文中“引用的部分”(指灰色字体的那些,比如——
引用
这样的),属于对正文的补充。对于那些有一定基础的读者,这些内容会有助于架构更加完善的知识体系;而没有基础的读者完全可以跳过这些部分。
当文中需要展示完整代码时,将在代码框右上角显示一个显示按钮,如下所示。点击该按钮后,右侧的代码视图就会显示对应的代码,并提供实时编译运行和编辑功能。
cout << "Hello! I'm here." << endl;
// 这里是代码视图。文中的完整代码都会在这里显示。 #include <iostream> using namespace std; int main() { cout << "Hello! I'm here." << endl; }
本文是面向 C++2b 标准的。对于有基础的读者来说,我强烈建议你们将编译器升级到最新的版本。如果条件不允许,也至少请升级到能支持 C++11 标准的版本。
当前(2022 年 6 月)主流编译器最新版本:
- GCC 12.1.0
- Clang 14.0.5
- MSVC 19.32(Visual Studio 2022, v17.2)
支持 C++11 全部特性(GC 除外)的最低版本:
- GCC 4.8.1
- Clang 3.8
- MSVC 19.26(Visual Studio 2019, v16.6)
其它
如果您觉得这本书有帮助或者还不错的话,可以给作者买一杯咖啡 ☕
⭐ 打颗星支持作者