我正在转向智能指针,我正在努力确保我正确使用它们.有很多问题涉及何时使用每个问题,但我无法找到关于吸气剂的具体问题.
我有一个拥有指针的类,我希望其他类能够访问该指针(在步骤中重构遗留代码).我想给类一个unique_ptr,因为它只拥有该对象,但是它们无法复制.我应该返回对unique_ptr的引用,还是只使用shared_ptr?
class B
{
public:
doAction() {};
};
class A
{
private:
std::unqiue_ptr<B> pointer;
public:
std::unique_ptr<B>& GetPointer()
{
return pointer;
}
};
a.GetPointer()->doAction();
Run Code Online (Sandbox Code Playgroud)
如果另一个类需要存储指针并且可能比A类寿命更长,请使用a shared_ptr.
如果没有,并且你的B物体应该在破坏A时被破坏,这是一个完全有效的使用unique_ptr.
正如评论中所指出的,只有在允许其他类更改指针时才会出现这种情况.如果没有,返回一个原始指针.
两者之间的区别不在于谁有权访问该类,而是关于谁负责销毁引用的对象.
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |