从“不应该使用原始指针”这一成语的角度出发,我正在研究智能指针,以找出最适合引用关系的一种。
通过引用关系,我的意思与以下代码相同:
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] 删除。
我来说两句