智能指针分析
一,永恒的话题
(一)内存泄漏(臭名昭著的Bug)
1,动态申请堆空间,用完后不归还
2,C++语言中没有垃圾回收的机制
3,指针无法控制所指堆空间的生命周期
(二)解决方案
1,重载指针特征操作符(->和*)
2,只能通过类的成员函数重载
3,重载函数不能使用参数
4,只能定义一个重载函数
二,深度思考
(一)我们需要什么
1 ,需要一个特殊的指针
2,指针生命周期结束时主动释放堆空间
3,一片堆空间最多只能由一个指针标识
4,杜绝指针运算和指针比较
三,智能指针的使用军规
(一)只能用来指向堆空间中的对象或者变量
四,小结
(一)指针特征操作符(->和*)可以被重载
(二)重载指针特征符能够使用对象替代指针
(三)智能指针只能用于指向堆空间中的内存
(四)智能指针的意义在于最大程度的避免内存问题