vimer linux kernel 爱好者

c++ 智能指针简介

2020-02-26

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


上一篇 c++的初始化

Comments

Content