智能指针(std::share_ptr std::unique_ptr std::weak_ptr)
1、std::shared_ptr,申请的内存不需要自己释放,通过引用计数来达到释放内存,当引用计数为0,会调用析构函数释放内存。使用std::shared_ptr过程中有一种特殊情况考虑到:两对象不能相互引用,否则会造成内存泄漏。解决这个问题可以使用std::weak_ptr,起到一个辅助作用。
2、std::unique_ptr,独享管理对象指针,它所指的对象不能进行拷贝构造、赋值构造,只能通过std::move方式构造。另外std::unique_ptr数据类型可作为函数返回值返回,涉及到编译器优化技术RVO或NRVO,实际上RVO或NRVO对于类对象返回作为函数返回值,不经过拷贝构造。
3、std::function、std::bind封装可执行对象(引入头文件#include <functional>)
std::function------>仿函数
std::bind------->绑定器