26
|
Evan Teran Benoît · 技术社区 · 15 年前 |
1
29
当您想要共享一个类成员,并且该类的一个实例已经是一个共享的指针时,它是有用的,如下所示:
他们分享使用数量和内容。这是内存使用的优化。 |
2
8
展开
leiz's
和
piotr's
答案,此描述
|
3
4
您还可以使用它来保持动态铸造指针,即:
|
4
2
您可能有一个指向某个驱动程序的指针,或者一个较低级别API的数据结构,它可以通过较低级别的API或其他方式分配额外的数据。在这种情况下,增加使用计数可能很有趣,但如果第一个指针拥有其他数据指针,则返回其他数据。 |
5
0
我已在我的小库中使用共享指针的别名构造函数: http://code.google.com/p/infectorpp/ (只是我简单的IOC容器) 重点是,因为我需要从多态类(不知道类型)返回已知类型的共享指针。我无法将共享资源隐式转换为我需要的类型。 在文件中” InfectorHelpers.hpp “(第72-99行)您可以看到IANyshared类型的实际情况。 别名构造函数创建的共享指针不会删除它们实际指向的指针,但 他们仍然增加了参考计数器 对于最初的目标,这是非常有用的。 基本上,您可以使用别名构造函数创建指向任何内容的指针,并威胁它作为引用计数器。
现在我们有了“一个引用计数器”和一个指向t距离的指针,足够的数据来用别名构造函数创建一些东西。
我并没有假装已经为别名构造函数发明了这种用法,但我从未见过其他人也这样做。如果你在猜测这个脏代码是否有效,答案是肯定的。 |
6
0
为了“
我认为这不是使用智能指针的推荐方法。 执行此类型转换的建议方法应为:
因为在Boost文档中提到:
除此之外,我们还有 动态指针投射 它可以直接在智能指针对象上进行转换,这两种方法都比手动转换原始指针方法安全得多。 |
Andre · Boost日志琐碎自动刷新 6 年前 |
Vitor · 如何使用boost::bind追加参数? 6 年前 |
slepasteur · 提高MSM编译速度 6 年前 |
werk jlcv · 如何快速删除数百万个文件 6 年前 |
hromer · 我的Boost正则表达式与任何内容都不匹配 6 年前 |
user997112 · 使用互斥量和条件变量跨内存提升进程间共享向量 6 年前 |