c++的智能指针可以说是一个高级用法,尤其是在大型项目中,一定少不了这个东西的参与。 也许,你不必亲自探究它的源码构成,但是看一看它是如何工作的,对自己的c++基础还有有莫大的帮助。
所有的智能指针头文件是memory
.智能指针的意图是解决内存管理的问题,如果你使用了智能指针去
申请内存,可以放心地保证减少内存泄漏的问题的产生。
首先看一下自己如何实现自动删除资源的class:
class smartPtr{
int *ptr; // actual pointer
public:
explicit smartPtr(int *p = NULL) { ptr = p; } // constructor
~smartPtr() { delete(ptr); }
int& operator *() { return *ptr; }
};
int main()
{
smartPtr ptr(new int());
*ptr = 20;
cout << *ptr << endl;
return 0;
}
这里有一些东西有待确证,实例化的对象是不是在程序退出后、也就是obj的生命周期结束后
自动调用析构函数,而且,你看,在类中还重载了\*
符号。
auto_ptr
std::auto_ptr
这个指针类已经被丢弃了,能不用这个就不用它吧。显而易见,推荐使用unique_ptr