加载中...
初学C++,应该学什么?
第1节:初学C++,应该学什么?
第2节:《白话C++》练的什么“功”?
第3节:《白话C++》练的什么“武”?
第4节:打开浏览器,线上玩转C++
第5节:逐字逐句,深入理解C++最小例程
第6节:做一个“会”犯错误的程序员
第7节:Hello World 中文版
第8节:Hello World 函数版
第9节:Hello World 交互版
第10节:Hello World 分支版
第11节:Hello World 循环版
第12节:Hello Object 生死版.上
第13节:Hello Object 生死版. 下
第14节:Hello Object 成员版
第15节:Hello Object 派生版
第16节:Hello Object 多态版
课文封面

本课为您答疑:

  • 学完厚厚的好几本 C++ 书,为什么还是只能写一些简单的样板程序?
  • 距离可以实际软件项目研发工作的要求为什么那么遥远?
  • C++ 编程应该学什么内容才能让学习过程充满成就感?
  • 什么时候才能写 “俄罗斯方块”,“图形界面”、“多媒体游戏”、“数据库连接”、“多人聊天室” ……?

目录

视频

1. 书不怕厚,重点是内容

《白话C++ 》是一本面向编程初学者的书,它有一个目标:希望能帮助读者在学完之后,找一份C++的编程工作。

《白话C++ 》的厚度肉眼可见:整本书分为 “练功” 和 “练武”,前者 800多页,后者1300多页(因此又拆成两册,以保证装订质量)。

《白话C++》实物图

正如视频中南老师所说,C++ 入门教程很厚,很重要一个原因是: C++ 这门语言自身就“厚”。它和Python、Java、C 的英文标准规范(或语言说明)厚度对照,参看下表:

语言 发行 标准规范(英文) 页码
Python 1991 语言参考(3.10) 200
C 1972 ISO/IEC 9899:2018 535
JAVA 1991 JAVA SE 19 PDF 850
C++ 1983 2020 草案 1834

C++ 语言从2011年新标后,采用“三年一升”的方式快速升级,因此截至今天(2023年),C++ 又有了2014、2017、2020、2023新标;其语言标准规范也越来越厚。再考虑,一门语言的标准规范仅用于告诉读者这门语言“是什么”(有什么语法规则)以及“有什么”(有什么功能),但正经的入门教程除此之外,还必须教会读者怎么用这门语言写对的代码。因此 C++ 入门教程很厚是再正常不过的现象。

薄的 C++ 入门书籍当然也有,比如南老师家里就有两本写给小学生学习 C++ 的书,每本厚度不超40页。如果不考虑入门的话,那么薄的 C++ 经典书籍也不少,我们在本课最后附录小节给出链接。

书不怕厚,关键是学完书以后,能得到什么成效?学习成效当然非常依赖读者自身的努力,但是如果一些非常必要的学习的内容,买的书却完全没给,读者自然无从努力。

《白话C++》讲的是哪几大块的内容呢?

2. C++知识版图四大块

视频里重点讲三大块内容:

  1. 语法、
  2. 标准库、
  3. 第三方库(也称扩展库)

这三大块在书中是“成建制”的出现;而第四块,南老师在视频中仅简单提到:“C++ 编程有什么好的思想、思路、习惯、风格、方法、模式等等,以及它们应该怎么养成?”。在《白话C++》,这块知识采用的是渗透式教学:没有专门的章节,也不泛泛而谈(不讲大道理),而是在有特定案例时,南老师就像高中时的班主任一样,突然从教室后门现身开始“说法”……在书中具体的展现形式,偶尔会使用正文,但多数使用《白话C++》的“轻松一刻”、“小提示”、“危险”甚或是在“课堂作业”中体现。

大家可以把“思想、思路、习惯……”这一块在书里的体现形式,理解为是军队里抓思想工作的“政委”的作用。

四大块知识版图在《白话 C++》中有哪些详细体现,我们在下一节课讲解,本课重点谈谈《白话C++》最具特点的第三方库知识。

3. 讲了哪些第三方库?

视频提到学习《白话C++》可以学到: “图形用户界面编程”、“数据库连接编程”、“小游戏编程”、“网络编程”等,它们都需要用到 C++ 的第三方库。《白话C++》教学用到的第三方库信息见下表:

说明 本书实例或练习
Win32 Windows原生图形界面开发 ①Win32 API创建窗口、②Winndows屏幕保护程序
wxWidget 轻量的跨平台GUI库,适合初学者理解复杂GUI ①记事板 ②小画家 ③多人聊天室客户端 ④桌面玫瑰 ⑤本机图片并发搜索工具 ⑥俄罗斯方块
boost C++ “准”标准库 UUID、命令行参数、scoped_ptr/array、timer、lexical_cast……
json11 WEB开发使用最广泛的前后端数据 见MySQL
redis WEB开发使用最广泛的缓存库 数据流动:从库到缓存
MySQL++ C++(已加入C++11支持)风格的 MySQL数据库连接 可能比某些专讲C++数据库编程还齐全的数据库操作,结合reids、json,在“数据篇”讲了一些WEB后台编程实例:①随机图文展现 ②使用校验问验证 ③登录
OpenSSL 全世界使用最广泛的网络安全基础库 主要结合下面的libcurl使用
libcurl 著名的“多功能” C 语言网络客户端库 ①FTP 客户端 ②C++封装libcurl ③网络爬图单线程版、④网络爬图并发版
asio 有望进入标准的C++网络库 ①echo网络服务 ②TCP代理服务 ③UDP ④结合future的异步编程
libSDL 上手简易但功能强大的跨平台多媒台游戏开发库 ①宝岛保卫战 ②宝宝识图

附录:推荐 C++ 书籍

初学

  1. 《白话 C++》练功、练武 京东当当
  2. 《C++ Primer》第5版 京东
  3. 《C++ 标准库》(视频同款,只讲到2011年新标,因此若还在学《白话C++》,可再等等它的新版)京东

进阶

建议高频使用C++约两年后再购买。

  1. 《More Effective C++》、《Effective Modern C++》(作者:斯科特·迈耶)
  2. 《C++20高级编程》(作者:马克·格雷戈勒)
  3. 《C++20高级编程》(作者:罗能)

第三方库

  1. 《C++11/14高级编程 Boost程序库探秘》(作者:罗剑锋)
  2. 《Qt 6 C++开发指南》(作者:王维波)

相关知识

以下书的内容并不特定于C++语言。

  1. 《Redis入门指南》(作者:李子骅)
  2. 《MySQL 8从入门到精通》(作者:王英英)

免责声明

以上除《白话C++》以外,其他书的作者我并不认识。书只是纯推荐,不是广告(没有收入);大家在做实际选择时,建议从更多渠道、用更多方法提前了解书的内容,再作决定。