在C++中,智能指针是存储一些动态分配对象或者资源的类,主要用于控制资源或者动态对象的使用生存期,设计的目的如下:
智能指针的实现一般都是使用引用计数,将一个计数器与使用的指针相关联起来,此时引用计数器跟踪该所属类有外部多少共享。因此在实现的时候,就有两个根本的部分
根据智能指针主要是上面两大部分,智能指针可以称为“智能计数指针”,智能主要是计数的意思,当然计数的用途就因应用而不同了,或者只是为了跟踪,或者是为了资源管理,或者是为了防止多次释放等等。
一,智能指针实现
下面的模板类,用于实现对指针的封装,其实现的功能如下:
有了这个类之后,我们可以定义一个指针,如针对class window的智能指针
scoped_refptr
此时,上面的模板就会包含一个window *ptr_的指针,从上面可以看出,为了能够正常工作,这类型的指针都必须要实现AddRef和Release方法,这应该不会是要求在class window中实现的吧?那也不太不符合封装的正常逻辑了。答案是:当然不会在class window中实现,这两个方法主要是针对计数的方法,专门针对class window封装一个计数器类,下面的计数器封装。