![]() ![]() |
|||
MoreEffectiveC++之智能指针 | |||
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 14:38:12 文章录入:杜斌 责任编辑:杜斌 | |||
|
|||
Smart Pointer的核心是实现
Smart Pointer的构造和析构是一门艺术,由此而衍生出很多不同类型的Smart Pointer。千万不要指望Smart Pointer的表现象原生指针,虽然可以通过隐式转换来实现它,然而往往带来的后果是灾难性的。 Meyers给出了一个优雅的隐式转换的办法:
可惜这样的程序在VC6中无法通过编译,似乎VC6不支持将novirtual member function声明成templates,但是VC7可以。这里地方需要注意四点技术: (1)函数调用的自变量匹配规则 (2)隐式型别转换函数 (3)template functions的暗自具现化 (4)member function templates。我承认,这有点太深入了。 在智能指针中const和non-const之间的转化也是很大的学问,我看了Meyers使用unions来做实现。这不是我喜欢的做法,我觉得风险还是比较大的。 Smart Pointer值得使用么?这不是我可以回答的问题,然而在以往的经验中,我似乎很少用到。也许是我的孤陋造成了这样的局面,但在更深层次来说,我需要阅读更多的Smart Pointer的实现。而且更加重要的是需要学会对Smart Pointer的调试,这似乎并不简单。 |
|||
![]() ![]() |