第六十一课 智能指针类模板
一、智能指针的意义
- 现代C++开发库中最重要的类模板之一
- C++ 中自动内存管理的主要手段
- 能够在很大程度上避开内存相关的问题
二、STL中的智能指针 auto_ptr
- 生命周期结束时,销毁指向的内存空间
- 不能指向堆数组,只能指向堆对象(变量)
- 一片堆空间只属于一个智能对象指针
- 多个智能指针不能指向同一片堆空间
三、STL 中的其他智能指针
-
shared_ptr
带有引用技术机制,支持多个指针对象指向同一片内存
-
weak_ptr
配合shared_ptr而引入的一种智能指针
-
unique_ptr
一个只针对性指向一片内存空间,不能拷贝构造和赋值
四、QT中的智能指针
-
QPointer
当其指向的对象被销毁时,它会被会自动置空
析构时,不会自动销毁指向对象
-
QSharedPointer
引用计数型智能指针
可以被自由的拷贝和赋值
当引用技术为0时才删除指向对象
五、小结
- 智能指针时 C++ 中自动内存管理的主要手段
- 智能指针再各种平台上都有不同的表现形式
- 智能指针能够尽可能地避开内存相关的问题
- STL 和 Qt中都提供了对智能指针的支持