对象引用计数的技术,在使用方面又存在两种方式,一种方式是创建一个基类,在基类里实现引用计数的操作,这样在派生类里就可以引用计数的保存和操作了。另外一种方式是引入第三个类,一个是操作对象的类,一个是引用计数的类,一个是把操作对象和引用计数的类组合在一起的类。这两种方式进行比较,继承的方式耦合程度要高一些,而采用组合方式复用性要好一些。因此在boost库里的实现就是采用第二种方式来进行的,这样就可以更适用于多种情况之下。
在boost库里引入了对象引用计数管理技术的模板类shared_ptr,这个智能指针是重量级的实现,不但可以拷贝,还可以比较指针,是跟原始指针最相似的智能指针。由于这些特性,这个智能指针是可以使用到STL里的容器类里,而不像前面几个智能指针那样,不具备这样的特性。
智能指针shared_ptr简单的使用如下:
[cpp]
// boost_004.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
#include
#include
//使用shared_ptr
//软件开发人员: 蔡军生 2013-02-09
void TestSharedPtr(void)
{
//一般指针操作
boost::shared_ptr< int > pFirst(new int);
*pFirst = 100;
std::cout << *pFirst << std::endl;
pFirst.reset(new int);
}