智能指针
一、什么是智能指针?
资源分配即初始化,定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。
对于编译器来说,智能指针实际上是一个栈对象,并非指针类型,在栈对象生命期即将结束时,智能指针通过析构函数释放有它管理的堆内存。所有智能指针都重载了“ operator-> ”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来的方法则使用“ . ”操作符。二、为什么要有智能指针的存在?
由于C++语言没有内存的自动回收机制,程序员每次new出来的内存都要手动delete释放,而当程序员忘delete,或者流程复杂,异常导致没有运行到delete提前退出,就会造成内存泄漏,防不胜防,则用智能指针可以有效缓解这些问题。
三、智能指针的发展
1.Auto_ptr 的管理权转移(了解机制,不建议使用)
用一段代码配合解析