CS106X: Programming Abstractions in C++

Description

使用C ++介绍了基本的编程概念和软件工程技术。解决问题的技能,基本的抽象数据类型和递归。常规主题包括基本编程方法(工程,模块化,文档),数据抽象(堆栈,队列,链表,哈希表,二叉树,泛型和模板),递归(过程,回溯),搜索和排序以及基本算法分析(包括Big-Oh表示法)。

Readings
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 部分新特性,比如右值引用、完美转发等