gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:09:21 25 4
gpt4 key购买 nike

从“不应该使用原始指针”的习语观点出发,我一直在研究智能指针,以找出最适合引用关系的指针。

通过指代关系,我的意思和这段代码一样:

class A
{
public:

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

private:

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

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

然而,每个智能指针在其自身语义中都表达了所有权概念。它们甚至围绕这个所有权概念命名(当所有权仅对一个对象唯一时为唯一指针,当所有权在多个对象之间共享时为共享指针等)。

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

最佳答案

没有“不应该使用原始指针”这样的东西。它是“不应该使用拥有原始指针”。为 refers-to 习语使用原始指针并没有错。智能指针对此来说只是一种矫枉过正。特别是 std::weak_ptr :)

关于c++ - 如何在现代 C++ 中表达引用关系而不表达所有权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34440157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com