一、C++11相对C++98显著变化
C++11的特性改变了书写C++代码的风格和习惯,也改变了设计C++库的方式。例如,你会看到更多的被当作参数和返回值的智能指针,用初始化列表初始化。
C++11相对于C++98有什么显著增强呢?
- 通过统一初始化表达式、auto、declytype、移动语义等来统一对泛型编程的支持。
- 通过constexpr、POD更好支持系统编程
- 通过内存模型、线程、原子操作来支持本地并行编程
- 通过内联命名空间、继承构造函数和右值引用等,更好支持库的构建
二、C++11常用的特性
auto类型说明符、decltype类型指示符
- auto忽略顶层const,保留底层const(如指针指向的地址中的内容为const)。
- auto的优势主要表现在对泛型编程的支持。
- decltype可以返回操作数的数据类型。
- C++11中的类型推导,大大方便了模板编程。
智能指针、nodelete
- c++的显式堆内存管理带来几大问题:野指针、重复释放、内存泄漏(不用的内存不释放)。
- 垃圾回收的方式:基于引用计数(难处理环形引用)、基于跟踪处理(使用更广泛)。
- 智能指针是基于引用计数来实现的。
- C++的最小垃圾回收基于安全派生指针。
- auto_ptr的缺陷:本身不含有赋值语义&#x