04 Smart Pointers
指针是非常强大的工具,强大到稍有不慎,就会伤着自己。原因是原始的指针有诸多缺陷:
* 不知道指针指向的是单个对象还是一个数组。
* 不知道用完之后是否应该销毁,即没有所有权。
* 销毁时,无法知道该直接 delete
还是需要使用其他析构机制。
* 假定用 delete
,由于不知道是数组还是对象,不确定是否改用 delete []
,用错了行为未定义。
* 无法保证在所有路径(包括异常)都只销毁了一次。销毁多次导致未定义行为。
* 无法知道指针是否是悬垂指针。
智能指针就是解决这些问题的一种办法。智能指针对裸指针包了一层,行为和裸指针一致,但是能够避免很多陷阱。
这一章主要讲解智能指针的应用场景、运行时性能分析等,更高效的使用这些指针。