0%

cpp标准库

强制类型转换

标准库提供了常见数据结构和常用算法
static_cast:基本类型之间,基类指针和子类指针(向下转换没有 dynamic_cast 安全)
reinterpret_cast:指针类型之间,整数和指针类型之间
dynamic_cast:类指针或引用的相互转换,需要虚函数表支持,有运行时类型检查,所以可以在类层次中向上和向下安全转换
const_cast:去除常量指针或引用的 const 属性

智能指针

智能指针是类,利用栈退出时临时变量自动销毁的原理,在析构函数中释放资源,避免内存泄漏

  1. unique_ptr:没有复制和赋值构造函数,同一时间只有一个智能指针指向对象
  2. shared_ptr:采用引用计数,当计数为 0,销毁
  3. weak_ptr:解决 shared_ptr 循环引用导致资源泄漏,weak_ptr 由 shared_ptr 创建,但是不影响引用计数
  4. auto_ptr(C++17 中移除)

数据结构和算法

array:固定大小的数组,底层是数组
vector:可以改变大小的数组,底层是数组
deque:

算法:

https://github.com/huihut/interview/tree/master/STL#array