07.C++11新特性
C++11新特性
-
auto
-
decltype
:求表达式的类型 -
智能指针
#include <memory>
shared_ptr
- 可以托管一个new运算符返回的指针
shared_ptr<T> ptr(new T)
- 此后
ptr
就可以像T*
类型的指针一样来使用, 即*ptr
就是用new
动态分配的那个对象, 且不必操心释放内存的事 - 多个
shared_ptr
对象可以同时托管一个指针, 系统会维护一个托管计数. 当无shared_ptr
托管该指针时,delete
该指针 shared_ptr
对象不能托管指向动态分配的数组的指针, 否则程序运行会出错
-
右值引用和move语义
-
右值引用
1
2
3class A{ }
A& r = A(); // error
A&& r = A(); // ok
-
强制类型转换
-
static_cast
- 用于比较"自然"和低风险的转换
- 比如整型和实数型、字符型之间互相转换
- 不能用于不同类型的指针之间互相转换
- 用于比较"自然"和低风险的转换
-
reinterpret_cast
- 不同类型的指针(引用)之间的转换
-
const_cast
- 用来去除const属性的转换, 将const引用转换成同类型的非const引用
-
dynamic_cast
- 专门用于将多态基类的指针或引用, 强制转换为派生类的指针或引用, 而且能够检查转换的安全性. 对于不安全的指针转换结果返回null, 引用转换结果抛出异常