+14引入)可以生成. std::unique_ptr禁止拷贝, 但允许移动到另一个std::unique_ptr中
std::weak_ptr为了解决循环引用的问题而提出, 类似std::shared_ptr...但是不会增加引用计数. std::weak_ptr没有*和->因此不能操作资源, .expired()可以检查目标资源是否被释放, 若释放则返回true. .lock()在资源未释放的时候返回一个新的std...智能指针则完全由程序员控制
垃圾回收器对于资源的释放有时候有优化, 例如将大批需要释放的资源集中起来一起释放, 这可以提高回收的效率, 智能指针大多只能逐个释放....所有不需要分享的指针都应该用这个来代替
unique_ptr还有一个默认模板参数是deleter决定析构时的动作....默认的default_delete仅仅是调用了delete操作, 可以自定义deleter来决定析构时的操作
我们应该像传递raw指针一样传递智能指针, 不用去考虑引用, 右值引用之类的操作
编写的时候注意尽量不要抛出异常