智能指针的标准之争:Boost vs. Loki

智能指针的标准之争:Boost vs. Loki

撰文/马维达 weida@flyingdonkey.com

2001 10 月和2002 4 月,在美国的华盛顿和荷兰的安的列斯群岛上分别召开了两次C++标准会议。会

议的内容之一是对一项新的C++特性提议——智能指针(Smart Pointer——进行讨论。本文将对可能成为C

++新标准的两种智能指针方案(Boost vs. Loki)进行介绍和分析,并给出了相应的使用实例。

关键词:智能指针 C++ Boost Loki

在现在的标准C++中,只有一种智能指针:std::auto_ptr。其原因并非是因为auto_ptr 已足以应付所

有相关的工作——实际上,auto_ptr 有一个重大的缺陷,就是它不能被用在STL 容器中——而是因为现在的C+

+标准在制定时并未能对智能指针进行全面的考察。按照C++标准委员会成员Herb Sutter 的说法,只有一种标

准的智能指针是一件可羞的事情:首先,智能指针所能做的许多有用的事情,是可怜的auto_ptr 不能完成

的;其次,在有些情况下使用auto_ptr 可能会造成问题,上面所说的不能在容器中使用就是一例。实际上,许

多程序员已经开发了各种有用的智能指针,有些甚至在auto_ptr 被定为标准之前就已存在,但问题是,它们不

是标准的。在这样的情况下,C++标准委员会考虑引入新的智能指针,也就是自然而然的事情了。目前进入委员会

视野的,主要有两种智能指针方案:Boost 智能指针和Loki 智能指针。前者是由C++标准委员会库工作组发起的

Boost 组织开发的,而后者由世界级的C++专家Andrei Alexandrescu 开发,并在他所著的“Modern C++

Design”一书中进行了详细的阐释。下面,让我们分别来看一看这两种方案各自的技术特点。

一、 Boost 智能指针

Boost 的智能指针方案实现了五种智能指针模板类,每种智能指针都用于不同的目的。这五种智能指针是:

template<typename T> class scoped_ptr;

template<typename T> class scoped_array;

template<typename T> class shared_ptr;

template<typename T> class shared_array;

template<typename T> class weak_ptr;

下面将分别介绍它们各自的特性,并给出相应的使用实例:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值