CS106X: Programming Abstractions in C++
Description
使用C ++介绍了基本的编程概念和软件工程技术。解决问题的技能,基本的抽象数据类型和递归。常规主题包括基本编程方法(工程,模块化,文档),数据抽象(堆栈,队列,链表,哈希表,二叉树,泛型和模板),递归(过程,回溯),搜索和排序以及基本算法分析(包括Big-Oh表示法)。
Readings
- https://web.stanford.edu/class/cs106x/handouts.html
- https://web.stanford.edu/class/cs106x/assignments.html
- C++ Primer
- 深度探索C++对象模型
Knowledge points
- 指针、引用、数组、内存
- 引用与指针区别
- C 和 C++ 的一些区别,比如 new、delete 和 malloc、free 的区别
- 虚机制:虚函数、虚函数表、纯虚函数
- 继承、虚继承、菱形继承等
- 多态:动态绑定,静态多态
- 重写、重载
- 智能指针原理:引用计数、RAII(资源获取即初始化)思想
- 智能指针使用:shared_ptr、weak_ptr、unique_ptr等
- 一些关键字的作用:static、const、volatile、extern
- 四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast
- STL部分容器的实现原理,如 vector、deque、map、hashmap
- 模板特化、偏特化,萃取 traits 技巧
- 编译链接机制、内存布局(memory layout)、对象模型
- C++11 部分新特性,比如右值引用、完美转发等