一、C++ prime plus理解
16.2 智能指针模板类 p667
智能指针模板类
- auto_ptr< typename> valname;
- share_ptr< typename> valname;
- unique_ptr< typename> valname;
- weak_ptr< typename>valname;
智能指针能够避免内存泄漏问题,在指针过期的时候会自动调用析构函数。
但是智能指针会导致一个问题,就是两个智能指针指向同一个对象时,会两次调用析构函数。
解决上述问题的方法:
- 定义赋值运算符,使其进行深复制。
- 建立所有权,只有一个智能指针可以拥有它,只有拥有所有权的智能指针有权删除它。然后,让赋值操作转移所有权。这就是auto_ptr和unique_ptr的方法。
- 建立引用计数,赋值时计数+1,指针过期时计数-1。当最后一个指针过期的时候才会调用析构函数,shared_ptr。
auto_ptr和unique_ptr相同点与区别
相同点:
- 两者都是所有权方法。
不同点:
- unique_ptr在编译阶段就会报错,而auto_ptr在运行阶段报错,更安全;
- ???讲的有点迷茫,到时候改。