在C ++中,空std :: shared_ptr和空std :: shared_ptr有什么区别?

R M

cplusplus.comshared_ptr页面召唤出一个区分 std::shared_ptr shared_ptrcppreference.com页面没有明确叫出区别,但同时使用“空”,并比较nullptr其描述std::shared_ptr行为。

空和空值之间有区别shared_ptr吗?这种混合行为指针有什么用例?非空nullshared_ptr甚至有意义吗?在正常使用情况下(如果您没有显式构造一个)会出现一个空但非空的情况shared_ptr吗?

如果您使用的是Boost版本而不是C ++ 11版本,这些答案是否会改变?

TC

这是shared_ptr行为的一个怪异角落它有一个构造函数,可以让你做出shared_ptr拥有的东西,别的东西:

template< class Y > 
shared_ptr( const shared_ptr<Y>& r, T *ptr );

shared_ptr使用此构造函数构造方法共享所有权r,但指向任何ptr指向的点(即,调用get()operator->()将返回ptr)。这对于ptr指向拥有的对象的子对象(例如,数据成员)的情况非常方便r

你的页面链接的电话shared_ptr拥有没什么,并且shared_ptr它指向什么(即它的get() == nullptr标准在这种意义上使用Empty;不使用null。)您可以构造一个null-not-not-empty shared_ptr,但它不是很有用。空但shared_ptr本质上是一个非所有的指针,它可以用来做一些奇怪的事情,例如将指向分配给堆栈的东西的指针传递给期望a的函数shared_ptr(但我建议对放置shared_ptr在其中的任何对象进行打孔API)。

boost::shared_ptr有这个构造器,他们称之为别名构造器

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

std :: shared_ptr的“拥有的指针”和“存储的指针”之间有什么区别?

来自分类Dev

C ++ Microsoft的ComPtr与c ++ unique_ptr,shared_ptr有什么区别?

来自分类Dev

C ++ Microsoft的ComPtr与c ++ unique_ptr,shared_ptr有什么区别?

来自分类Dev

C++ 中 std::shared_ptr 数组的工作原理

来自分类Dev

C ++ 11 std :: shared_ptr工作正常,但是boost :: shared_ptr崩溃了,这是什么原因引起的?

来自分类Dev

std :: shared_ptr和继承

来自分类Dev

std :: function和shared_ptr

来自分类Dev

std :: shared_ptr为null但不为空

来自分类Dev

std :: unordered_map插入错误shared_ptr C ++

来自分类Dev

C ++使用指向std :: shared_ptr的Raw指针

来自分类Dev

std :: unordered_map插入错误shared_ptr C ++

来自分类Dev

C ++ std :: shared_ptr参考的reinterpret_cast优化

来自分类Dev

QVariant与std :: shared_ptr

来自分类Dev

QVariant与std :: shared_ptr

来自分类Dev

使用C ++ std :: unique_ptr <>或std :: shared_ptr <>来管理Objective-C对象

来自分类Dev

使用C ++ std :: unique_ptr <>或std :: shared_ptr <>来管理Objective-C对象

来自分类Dev

拥有std :: make_shared的std :: shared_ptr

来自分类Dev

std :: enable_if和std :: shared_ptr

来自分类Dev

std :: unique_ptr和std :: shared_ptr之间的破坏行为差异的原理是什么?

来自分类Dev

如何取得std :: unique_ptr和std :: shared_ptr的所有权

来自分类Dev

使用std :: move与std :: shared_ptr

来自分类Dev

内存无法释放std :: list <std :: shared_ptr <std :: string >> C ++

来自分类Dev

我在链表实现中的std :: shared_ptr和std :: unique_ptr怎么办?

来自分类Dev

使用std map和shared_ptr的奇怪内存行为

来自分类Dev

使用std :: shared_ptr和指向成员函数的指针

来自分类Dev

使用std map和shared_ptr的奇怪内存行为

来自分类Dev

继承和智能指针(std :: shared_ptr)

来自分类Dev

std::shared_ptr(s) 和内存泄漏

来自分类Dev

使用std :: shared_ptr作为Objective-C中的全局变量

Related 相关文章

  1. 1

    std :: shared_ptr的“拥有的指针”和“存储的指针”之间有什么区别?

  2. 2

    C ++ Microsoft的ComPtr与c ++ unique_ptr,shared_ptr有什么区别?

  3. 3

    C ++ Microsoft的ComPtr与c ++ unique_ptr,shared_ptr有什么区别?

  4. 4

    C++ 中 std::shared_ptr 数组的工作原理

  5. 5

    C ++ 11 std :: shared_ptr工作正常,但是boost :: shared_ptr崩溃了,这是什么原因引起的?

  6. 6

    std :: shared_ptr和继承

  7. 7

    std :: function和shared_ptr

  8. 8

    std :: shared_ptr为null但不为空

  9. 9

    std :: unordered_map插入错误shared_ptr C ++

  10. 10

    C ++使用指向std :: shared_ptr的Raw指针

  11. 11

    std :: unordered_map插入错误shared_ptr C ++

  12. 12

    C ++ std :: shared_ptr参考的reinterpret_cast优化

  13. 13

    QVariant与std :: shared_ptr

  14. 14

    QVariant与std :: shared_ptr

  15. 15

    使用C ++ std :: unique_ptr <>或std :: shared_ptr <>来管理Objective-C对象

  16. 16

    使用C ++ std :: unique_ptr <>或std :: shared_ptr <>来管理Objective-C对象

  17. 17

    拥有std :: make_shared的std :: shared_ptr

  18. 18

    std :: enable_if和std :: shared_ptr

  19. 19

    std :: unique_ptr和std :: shared_ptr之间的破坏行为差异的原理是什么?

  20. 20

    如何取得std :: unique_ptr和std :: shared_ptr的所有权

  21. 21

    使用std :: move与std :: shared_ptr

  22. 22

    内存无法释放std :: list <std :: shared_ptr <std :: string >> C ++

  23. 23

    我在链表实现中的std :: shared_ptr和std :: unique_ptr怎么办?

  24. 24

    使用std map和shared_ptr的奇怪内存行为

  25. 25

    使用std :: shared_ptr和指向成员函数的指针

  26. 26

    使用std map和shared_ptr的奇怪内存行为

  27. 27

    继承和智能指针(std :: shared_ptr)

  28. 28

    std::shared_ptr(s) 和内存泄漏

  29. 29

    使用std :: shared_ptr作为Objective-C中的全局变量

热门标签

归档