一、书籍
- C++ Primer
- Accelerated C++
- Effective C++
- Inside The C++ Object Model
- The Disign and Evolution of C++
- STL源码剖析
- C++ 工程实践经验谈
- Modern C++ Design
- …
二、知识点
- C++语言联邦(Scott Mayer + ADT)
- 数据抽象 (封装)
- const
- value / reference / pointer 指向函数的pointer
- 函数调用机制:堆栈建立、参数排列、返回地址、堆栈清除 (名字特异)
- 函数对象 / lambda表达式 / callback
- shared_ptr / weak_ptr / scope_ptr 等智能指针
- algorithm / data struct (STL)
- 迭代器失效 vector(insert / erase) map / set / list / deque
- new / delete VS molloc / free VS allocator
- 内存管理 pool / RAII / layout 内存布局
- 变量存储 堆 / 栈 (CSAPP)
- explicit / implicit / noncopyable / delete / typedef / typename / class 等关键字
- 类的基础设计(几个构造函数,操作符重载,自赋值处理)
- 多态性 -> 虚析构函数 -> 纯虚函数 -> virtual table / vptr
- sizeof / printf 等函数或操作符
- 四种类型转换 _cast
- 值语义 / 对象语义 -> C++ 11 右值(std::move / 异常安全swap)
- function / bind
- Inside The C++ Object Model
- 继承对于member布局的影响
- memberwise copy / bitwise copy
- 延迟对象定义 / copy-on-write
- static nonmember / member functions 特性
- 临时对象(临时性生成物)的生命期
- …
三、简单项目
- 复数类 / 大整数类:实现基本的加减乘运算,熟悉封装与数据抽象
- 字符串string类:熟悉内存管理与拷贝控制
- 简化的 vector 类:使用模板,swap,能放入int 和 std::string 等元素类型
- 表达式计算器:面向对象编程,对象语义,继承,泛型
- 智能指针:模板编程,类的设计原则
- iostream:轻量化