如何在现代C ++中表达引用关系而不表达所有权?

第108节

从“不应该使用原始指针”这一成语的角度出发,我正在研究智能指针,以找出最适合引用关系的一种。

通过引用关系,我的意思与以下代码相同:

class A
{
public:

    A(B & b) : 
        m_refB( b ) 
    {   }

private:

    B & m_refB;    // A refers to B
};

但是没有使用引用的所有缺点(以后不能绑定,不能重新分配,A不再是默认可构造的,等等)。

但是,每个智能指针都以其自身的语义来表达所有权概念。它们甚至根据这种所有权概念来命名(当所有权仅对一个对象唯一时,使用唯一指针;当所有权在更多对象之间共享时,使用共享指针)。

我想表达的是A指的是B,但A不拥有B。可以std::reference_wrapper< B >做这项工作吗,否则这是错误的用法?

谢尔盖

没有“一个人不应该使用原始指针”这样的东西它是“一个不应该使用拥有原始指针的人”拥有指向引用成语的原始指针没有错。智能指针只是对此的一个过大杀伤力。特别是std::weak_ptr:)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NSArray如何获得C ++对象的所有权

来自分类Dev

如何在不拥有所有权的情况下获取文件夹的大小?

来自分类Dev

如何更改 bintray 包所有权

来自分类Dev

C ++析构函数和所有权

来自分类Dev

获得C:/的“所有权”是否安全?

来自分类Dev

C++ 类指针和所有权

来自分类Dev

如何在C ++中启用Rust所有权范式

来自分类Dev

混淆的引用所有权:如何正确地(通过Py_DECREF)释放对象的对象?

来自分类Dev

如果BufReader拥有流的所有权,如何在该流上读写行?

来自分类Dev

如何在unique_ptrs之间转移所有权

来自分类Dev

如何在两个用户之间共享目录的所有权

来自分类Dev

如何在Java中检查内部类的所有权

来自分类Dev

QJSEngine删除我的QObject,如何在QJSEngine :: newQObject之后更改所有权?

来自分类Dev

如何在Ubuntu中更改文件的组所有权?

来自分类Dev

如何在apiary.io中更改API文档的所有权?

来自分类Dev

如何在MariaDB(MySQL)中正确设置所有权和特权?

来自分类Dev

如何在Symfony中使用html文件方法验证(google)域所有权?

来自分类Dev

如何在Docker上共享已挂载目录的所有权?

来自分类Dev

如何在Dropbox中保留所有权和权限?

来自分类Dev

如何在Windows中获取多个文件的所有权?

来自分类Dev

文件所有权如何在不同系统之间受到影响?

来自分类Dev

如何在rsync中任意映射用户/组所有权

来自分类Dev

如何在Java中检查内部类的所有权

来自分类Dev

Docker:如何在仅数据容器中设置文件所有权?

来自分类Dev

如何在UNIX中使用Secure Copy保存所有权

来自分类Dev

如何在发行版之间转移文件的所有权?

来自分类Dev

如何在.reg文件中以admin身份执行cmd以更改所有权

来自分类Dev

如何在 Rust 的未来中赋予所有权

来自分类Dev

我该如何在Laravel的口才中表达这种游戏所有者关系

Related 相关文章

  1. 1

    NSArray如何获得C ++对象的所有权

  2. 2

    如何在不拥有所有权的情况下获取文件夹的大小?

  3. 3

    如何更改 bintray 包所有权

  4. 4

    C ++析构函数和所有权

  5. 5

    获得C:/的“所有权”是否安全?

  6. 6

    C++ 类指针和所有权

  7. 7

    如何在C ++中启用Rust所有权范式

  8. 8

    混淆的引用所有权:如何正确地(通过Py_DECREF)释放对象的对象?

  9. 9

    如果BufReader拥有流的所有权,如何在该流上读写行?

  10. 10

    如何在unique_ptrs之间转移所有权

  11. 11

    如何在两个用户之间共享目录的所有权

  12. 12

    如何在Java中检查内部类的所有权

  13. 13

    QJSEngine删除我的QObject,如何在QJSEngine :: newQObject之后更改所有权?

  14. 14

    如何在Ubuntu中更改文件的组所有权?

  15. 15

    如何在apiary.io中更改API文档的所有权?

  16. 16

    如何在MariaDB(MySQL)中正确设置所有权和特权?

  17. 17

    如何在Symfony中使用html文件方法验证(google)域所有权?

  18. 18

    如何在Docker上共享已挂载目录的所有权?

  19. 19

    如何在Dropbox中保留所有权和权限?

  20. 20

    如何在Windows中获取多个文件的所有权?

  21. 21

    文件所有权如何在不同系统之间受到影响?

  22. 22

    如何在rsync中任意映射用户/组所有权

  23. 23

    如何在Java中检查内部类的所有权

  24. 24

    Docker:如何在仅数据容器中设置文件所有权?

  25. 25

    如何在UNIX中使用Secure Copy保存所有权

  26. 26

    如何在发行版之间转移文件的所有权?

  27. 27

    如何在.reg文件中以admin身份执行cmd以更改所有权

  28. 28

    如何在 Rust 的未来中赋予所有权

  29. 29

    我该如何在Laravel的口才中表达这种游戏所有者关系

热门标签

归档