很多关于C++问题的答案都包含以下回复:
"你应该使用boost::(插入你喜欢的智能指针)或者更好的是boost::(插入你喜欢的超级复杂的boost类型)"
我并不完全相信这对于那些明显是C++新手的提问者有任何帮助。我的理由如下:
不理解智能指针内部工作原理就使用它们,会导致一代C++程序员缺乏一些基本的编程技能。在Java领域中,这似乎已经发生了。
决定使用哪种类型的智能指针很大程度上取决于所处理的问题域。这几乎总是在这里发布的问题中缺失的,因此简单地说“使用共享指针”可能至少没有帮助,可能完全错误。
Boost尚未成为C++标准的一部分,并且可能在提问者使用的特定平台上不可用。安装它有点麻烦(我刚刚使用Jam安装了它),如果您只想要几个智能指针,那么这将是过度杀伤力。
如果您正在编写FOSS代码,则不希望代码过于依赖外部库,因为再次,您的用户可能没有这些库。由于库之间的拜占庭式复杂性,我曾多次放弃使用FOSS代码。
最后,我并不是说不推荐Boost,而是我们在这样做时应该更加小心。