课程详情

本课程介绍(现代)C++11~20标准的程序设计方法。由网易云课堂计算机课程体系《C++程序设计》全面改版。 课件中英文对照,便于学习计算机术语。 学过C、Java或者Python,想要了解新标准C++,可以参加本课程学习。

课程概述

为什么要学这门课程?

学C语言后想进阶学C++;
学Java后想了解C++这个同门大佬;
听说C++ 11/14/17/20被称为“Modern C++”,想看看它和“Classic C++”有啥不同;
想学习编码规范以写出【好看】的代码。

这门课程要求:

你已有编程基础,知道数据类型、分支循环、数组等语言要素;
你已经写过代码,想看看C++能否多快好省地编程序。

这门课程不适合:

从未接触过编程(可以先学C语言入门);
希望用三行代码改变世界(建议去学Python);
认为Java能搞定一切(奇迹和灾难都在JVM中);
非IT专业但听说编程是职场必备能力(可以先学解释型语言,更易入门)。

必须要学C++的理由:

做人工智能研究,想要深入底层;比如TensorFlow的核心是用C++写的;
做游戏开发,包括端游和网游后台,以发挥计算机的全部性能,需要C++;
做智能硬件、嵌入式或硬件驱动开发;C++会提供更多工具,生产效率更高;
你喜欢。

必须要学本课程的理由:

学了C++,但是希望学习C++11~C++20等新标准的特性及编程范式;
学了C++,但是还在用typedef,或者认为 for(auto i : array)是写错了;
定义变量时轮流使用26个英文字母,不够的话再加上下划线 (⊙_⊙)?

课程内容更新安排:

第一期课程主要介绍C++基础及C++11~17的功能性增强;
第二期课程补充一些C++17的基础特性
第三期课程继续补充C++11~17中一些较难理解的特性,并选择少量C++20的新增特性
第四期课程继续补充C++课下实验内容,供学有余力同学参考使用

授课目标

通过这门课程,希望能够让你:
初步掌握C++的面向对象编程方法;
能初步使用 C++11/14/17 标准中 “Modern C++” 的思想写代码
了解并应用编码规范

课程大纲

预备知识

学过C语言,了解数据类型、分支循环、函数、数组、指针;
或者,学过Java,但需要额外补学C/C++的指针(指针定义、解引用、指针作为函数返回值和参数)
或者学过Python,但需要额外补学C/C++的数据类型、数组、指针

证书要求

参考资料

本课程的绝大部分C++11~C++17的新特性教学内容均由课程团队自行编写。上述参考资料中无法找到对应的内容
附加资料:
《深入理解C++11:C++11新特性解析与应用》,Michael Wong, IBM XL编译器中国开发团队,机械工业出版社,2013年
《C++程序设计语言(第1-3部分)》第四版,[美] 本贾尼·斯特劳斯特鲁普,机械工业出版社,2016年; 【726页。这本是C++他爹写的,当字典用。第4部分单独成书,352页】
《C++ Primer》第5版 中文版,[美]Stanley B. Lippman & Barbara E. Moo, 电子工业出版社,2013年 【848页。这本是大全,是“C++从入门到Java”的表率】
《C Primer Plus》第6版 中文版,[美]Stephen Prata,人民邮电出版社,2012年 【936页。这本易与上面那本混淆。但是它是讲C语言的,比上面那本易读,所以多了88页】

课程交流:

常见问题

1、 课程中的代码那?
代码并非全部都能编译通过。其中有一些故意制造的错误用于课堂演示,代码不定期更新。
2、 本课程中使用的C++版本?
现代C++(Modern C++,特指C++11及之后的C++) 继承了经典C++(Classic C++) 的面向对象思想、泛型编程思想。此外,从2011年开始,C++标准化委员会决定每3年推出一个新的标准。本课程中包含C++14和C++17的部分内容。本课程将跟进C++标准化委员会的进展不断更新。在本课程第2、3次开课时,将会补充C++17的更多内容,并视标准化委员会的进展和编译器的支持情况,补充C++20的内容。